Конференция "WinAPI" » Несколько ускоренный способ сканирования директории.
 
  • Dmitry S © (16.10.07 13:44) [20]
    Удалено модератором
    Примечание: Offtopic
  • Riply © (22.10.07 16:17) [21]
    >[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.
    Сама скорость открытия файла очень сильно зависит от уровня доступа,
    который мы запрашиваем (почему - пока не знаю).
    Так что не жадничайте ! :))

    Такие новости с поля боя к этому часу :)
 
Конференция "WinAPI" » Несколько ускоренный способ сканирования директории.
Есть новые Нет новых   [120362   +46][b:0][p:0.001]