Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.01;
Скачать: CL | DM;

Вниз

Проблема поиска известных файлов   Найти похожие ветки 

 
BAHbKA ©   (2007-05-02 15:20) [0]

Здравствуйте!

Есть список файлов (>10К), нужно их найти и узнать размеры (int64). Проблема в том, что каждый последующий поиск происходит дольше, чем предыдущий, и эта нелинейность в конце концов приводит к стопору. Например, время поиска файла через каждые 3000 выборок: 5, 14, 21, 29 мс.
Пробовал делать через FindFirstFile и CreateFile, результат одинаковый.

Как можно решить эту проблему?


 
clickmaker ©   (2007-05-02 15:32) [1]


> BAHbKA ©   (02.05.07 15:20)

как пробовал-то?


 
BAHbKA ©   (2007-05-02 16:06) [2]

В цикле:

...
// 1
i64:=-1;
Hnd:= CreateFile( Pchar(s),
                       0,
                       FILE_SHARE_READ,
                       nil,
                       OPEN_EXISTING,
                       0,
                       0
                     );
if Hnd<>INVALID_HANDLE_VALUE then
  BEGIN
  i64:=getfilesize64(Hnd);
  closehandle(Hnd);
  END;
...

...
// 2
Hnd := FindFirstFile(PChar(s), FindData);
if Hnd <> INVALID_HANDLE_VALUE then
 begin
 if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
    begin
    i64:=FindData.nFileSizeHigh;
    i64:=(i64 shl 32)or FindData.nFileSizeLow;
    end;
 Windows.FindClose(Hnd);
 end
  else i64:=-1;
...

Может ещё как-то можно?


 
Reindeer Moss Eater ©   (2007-05-02 17:30) [3]

FindClose надо делать даже если файл не найден.


 
BAHbKA ©   (2007-05-02 17:44) [4]

Участок с FindClose взят из Sysutils.
Даже когда все файлы найдены результат такой же...


 
begin...end ©   (2007-05-02 17:55) [5]

> Reindeer Moss Eater ©   (02.05.07 17:30) [3]

Не надо.



Страницы: 1 вся ветка

Текущий архив: 2007.07.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
15-1180722124
@!!ex
2007-06-01 22:22
2007.07.01
Delphi -> Lazarus


9-1155052853
VolanD666
2006-08-08 20:00
2007.07.01
Текстурные координаты гонят?


1-1178106337
DelphiLexx
2007-05-02 15:45
2007.07.01
Передать процедуру класса в Обычную функцию


15-1180445669
Kolan
2007-05-29 17:34
2007.07.01
Ищу тконки &amp;laquo;Play&amp;raquo; и &amp;laquo;Stop&amp;raquo; в стиле XP.


3-1175688182
ANB
2007-04-04 16:03
2007.07.01
Транзакции в триггерах Оракла