Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перевод функций на asm для ускорения работы [D7, Win2k, WinXP]


Страницы:   1 2

Wolf ©   (2008-01-05 17:52:00) 

Приветствую.
Пишу приложение функцией которого являеться сканирование всех файлов на диске и вывод информации о файлах. включая размер файла.

Использую стандартные функции поиска и определения размера.
Возникла идея ускорить работу путем написания функций на asm.
Сам я асемблер знаю плохо.
Может быть вы сможете помочь перевести функцию определение размера файла а asm ?

Что то наподобие чтобы получилось

function FileSize(FileName:string):integer; // возвращает размер файла в байтах
begin

asm
// Код на asm
end;

end;

Пока это самое основное. Еще бы кто нибудь подсказал как реализовать поиск файлов на asm и было бы вообще замечательно :)


Wolf   (2008-01-06 18:43:00) [1]

> guav ©   (06.01.08 13:36) [16]

Если FileSize вызывается исключительно для найденных файлов, то можно обойтись вообще без вызова FileSize.
Структура WIN32_FIND_DATA, возвращаемая FindFirstFile, содержит размер, а также времена и аттрибуты.

Спасибо за конкретную подсказку, действительно занимает время так же получения размера, нужно будет переделать

Спасибо остальным :)


DVM   (2008-01-06 16:39:00) [2]


> Что там было не понять…

Мысль не развита. Подробнее надо.


> И каким образом «фраза» «нет» может быть тупой…

Поверь мне, может.


homm   (2008-01-06 16:34:00) [3]

> [24] DVM ©   (06.01.08 16:30)
> тупую фразу "нет" я не понял.

Что там было не понять…
И каким образом «фраза» «нет» может быть тупой…


DVM   (2008-01-06 16:30:00) [4]


> странно, в [13] понял, а в [18] опять не понял.

Согласен, тупую фразу "нет" я не понял.


homm   (2008-01-06 16:27:00) [5]

> [22] DVM ©   (06.01.08 16:23)
> Я это все понял еще после [13] и твое замечание оно как
> бы запоздало.

странно, в [13] понял, а в [18] опять не понял.


DVM   (2008-01-06 16:23:00) [6]


> homm ©   (06.01.08 16:17) [21]


> Очевидно же, что от того, как ты ее прочел, с фразой ничего
> не стновится, она как была верной, так и осталась.

Я это все понял еще после [13] и твое замечание оно как бы запоздало.


> Это ты мне после [18] говоришь?

Да.


homm   (2008-01-06 16:17:00) [7]

> [20] DVM ©   (06.01.08 16:15)
> очевидно же, что я фразу прочитал бегло и мне показалось
> из-за обилия "не",

Очевидно же, что от того, как ты ее прочел, с фразой ничего не стновится, она как была верной, так и осталась.


> поспорить не с кем что ли?

Это ты мне после [18] говоришь?


DVM   (2008-01-06 16:15:00) [8]


> homm ©   (06.01.08 16:13) [19]

поспорить не с кем что ли? очевидно же, что я фразу прочитал бегло и мне показалось из-за обилия "не", что у неее противоположный смысл.


homm   (2008-01-06 16:13:00) [9]

> [18] DVM ©   (06.01.08 16:10)
> Да.

Читаем фразу Riply еще раз, убеждаемся. Таки нет.


DVM   (2008-01-06 16:10:00) [10]


> Нет.

Да.


homm   (2008-01-06 15:18:00) [11]

> [14] DVM ©   (06.01.08 11:49)
> :) а выглядит как наоборот

Нет.


guav   (2008-01-06 13:36:00) [12]

> [0] Wolf ©   (05.01.08 17:52)

Если FileSize вызывается исключительно для найденных файлов, то можно обойтись вообще без вызова FileSize.
Структура WIN32_FIND_DATA, возвращаемая FindFirstFile, содержит размер, а также времена и аттрибуты.
Это могло бы ускорить работу, особенно на FAT, но какие результаты будут на практике - не знаю, возможно, что в результате работы кэша они не будут ощутимыми.
asm тут не при чём.


Riply   (2008-01-06 12:09:00) [13]

> [14] DVM ©   (06.01.08 11:49)
> :) а выглядит как наоборот. Многоуровневые отрицания однако.

Sorry. Не всегда получается ясно излагать свои мысли :)


DVM   (2008-01-06 11:49:00) [14]


> Так Riply наоборот согласна, что ассемблер тут не нужен.
> .. :)

:) а выглядит как наоборот. Многоуровневые отрицания однако.


@!!ex   (2008-01-06 11:44:00) [15]

> [12] DVM ©   (06.01.08 11:40)

Так Riply наоборот согласна, что ассемблер тут не нужен... :)


DVM   (2008-01-06 11:40:00) [16]


> Riply ©   (06.01.08 10:57) [11]


> Вот с этим не могу не согласиться :)

Что такого можно сделать на ASM, чего бы нельзя было сделать на Pascal-е, чтобы код на ASM был существенно быстрее, чем на Pascal? Применительно к данному случаю.


Riply   (2008-01-06 10:57:00) [17]

> [10] @!!ex ©   (06.01.08 10:47)
> Вопрос в том, что ассемблер тут никак не поможет, :)

Вот с этим не могу не согласиться :)
Тем более, что автор хочет получать размер файла,
не при нахождении оного, а его повторным открытием.
Иными словами: повтрорным поиском :)


@!!ex   (2008-01-06 10:47:00) [18]

> [9] Riply ©   (06.01.08 10:24)

Вопрос в том, что ассемблер тут никак не поможет, :)


Riply   (2008-01-06 10:24:00) [19]

> [8] Riply ©   (06.01.08 10:18)

Забыла добавить: отнюдь не последнюю роль в ускорении играет
уменьшение количества обращений к диску при сканировании,
по сравнению с тем количеством, которое потребуется если использовать FindFirst/FindNext


Riply   (2008-01-06 10:18:00) [20]

> [6] Юрий Зотов ©   (06.01.08 03:58)
> Есть легкое подозрение, что 90% времени в этой программе
> занимают дисковые операции - и никуда от этого не денешься.
Процент зависит от типа и критериев поиска.

> Оставшиеся 10% занимает собственно исполнение кода.
> И даже если это время оптимизировать до полного нуля,
> то суммарный выигрыш все равно не превысит 10%.

Очень сильно зависит от структуры дерева (количество детей в корне объекта и т.д.)
При простом перечислении объектов файлового типа,
на индексированном диске можно добиться выигрыша в 30 - 50%,
если же при перечислении требуется еще и открытие файлов, то выигрыш в 2-3 раза.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо