>
[0] Riply © (14.10.07 21:09)
Хочу вернуться к нашим баранам. Тьфу... К Riply`ским баранам :)
Случайно напоролась на следующее:
Когда мы таким образом только сканируем, то выигрыш от 15 до 50 %
(зависит от "состояния" диска, соотношения кол-во файлов/кол-во директорий,
уровня вложенности, длин имен и т.д. и т.п.)
Но дело приобретает совсем другой оборот, если нам еще надо и открывать файлы:
выигрыш уже считается "в разы".
Пример теста:
Внутри FindFirst/Next работаем, примерно, так:
Handle:= CreateFileA(PChar(Buf), FILE_ANY_ACCESS, ..., OPEN_EXISTING, ...);
if Handle <> INVALID_HANDLE_VALUE then CloseHandle(Handle);
В нашем же случае, я не только открывала все файлы и директории,
но еще и перебирала их потоки.
Каково же было мое удивление, когда наш вариант (вместе с потоками)
посчитался быстрее в три раза. (23891 и 8113 ms).
P.S.
Вобщем то, если вдуматься, то стоило ожидать, учитывая сколько MFT
записей придется просмотреть.
P.S.S.
Сама скорость открытия файла очень сильно зависит от уровня доступа,
который мы запрашиваем (почему - пока не знаю).
Так что не жадничайте ! :))
Такие новости с поля боя к этому часу :)