![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевод функций на asm для ускорения работы [D7, Win2k, WinXP]
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 раза.