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

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

FindFirst, FindNext... Как быстрее?


Страницы:   1 2

DevilDevil ©   (2009-08-10 11:24:00) 

Время не засекал, потому что бесполезно.
Поиск как-то кешируется и в следующий раз осуществляется намного быстрее.

Суть вопроса.
Какой поиск быстрее: по всем файлам/папкам или по маске ?

Предполагаю, что поиск по маске - это поиск по всем файлам, только с фильтрафией внутри FindFirst/FindNext. Или я не прав и есть какой-то крутой механизм у них?


Медвежонок Пятачок   (2009-08-10 14:54:00) [21]

у тебя есть исходник FindFirst и FindNext ?

Он у всех есть.
А вот FindFirstFile - не у всех


DevilDevil   (2009-08-10 14:48:00) [22]

>qwer_qwer
у тебя есть исходник FindFirst и FindNext ?

>Palladin ©
>Anatoly Podgoretsky ©

Dir + '\*.jpg *.jpe *.jpeg *.jfif *.bmp ?


qwer_qwer   (2009-08-10 14:36:00) [23]


> DevilDevil ©   (10.08.09 11:24) 


Разбери исходник этих функций и убедишься, что не имеет значения, используешь ты маску '*.jpg' или '*.*'.


Anatoly Podgoretsky   (2009-08-10 14:27:00) [24]

> DevilDevil  (10.08.2009 14:07:12)  [12]

*.*


Palladin   (2009-08-10 14:18:00) [25]

*.* + ExtractFileExt


DevilDevil   (2009-08-10 14:07:00) [26]

Ну хорошо
А как сформировать маску из нескольких расширений

Ну для jpg знаю - *.jpg. А для нескольких?


DevilDevil   (2009-08-10 12:15:00) [27]

>Anatoly Podgoretsky
>ЗЫ: без маски FindFirst не работает, никогда.

Верно. Но маска *.* широко распространена и вполне может оптимизироваться ОС, не используя фильтрацию вообще.

>Сам же убедился, что особой разницы нет.
не убедился
не производил замеров времени.

>Быстрый поиск осуществляется предварительным индексированием
?


DrPass   (2009-08-10 12:03:00) [28]


DevilDevil ©   (10.08.09 11:58) [8]
> P.S. моя задача - максимально быстрый поиск jpg, jpe, jpeg,
>  jfif, bmp - файлов.
> Стараюсь понять, как сделать быстрее

Это же очевидно, что ни перебор по маске, ни перебор всех файлов не дадут тебе максимально быстрого поиска, не так ли? Сам же убедился, что особой разницы нет.
Быстрый поиск осуществляется предварительным индексированием


Anatoly Podgoretsky   (2009-08-10 12:02:00) [29]

> DevilDevil  (10.08.2009 11:58:08)  [8]

От количества файлов попадающих под условия, худший случай маски *.*  - будут обработаны все файлы. Лучший случай, когда под условие попадает только один файл, с маской file.ext

Твоя задача подразумевает сделать это за один проход или за пять?

ЗЫ: без маски FindFirst не работает, никогда.


DevilDevil   (2009-08-10 11:58:00) [30]

От какой ситуации зависит?
От чего?
Каким способом осуществляется поиск: первым или вторым?

P.S. моя задача - максимально быстрый поиск jpg, jpe, jpeg, jfif, bmp - файлов.
Стараюсь понять, как сделать быстрее.


Anatoly Podgoretsky   (2009-08-10 11:49:00) [31]

> DevilDevil  (10.08.2009 11:44:06)  [6]

Я уже ответил, что не понятного?


DevilDevil   (2009-08-10 11:44:00) [32]

>Palladin
осуществляется поиск

Случай 1. Фильтрация по маске осуществляется внутри FindFirst/FindNext
Происходит перебор всех файлов. Если имя файла соответствует маске, то возвращается TSearchRec.
Перебор всех файлов в таком случае будет быстрее, т.к. не происходит фильтрации

Случай 2. Фильтрация по маске осуществляется каким-то мега супеп пупер алгоритмом, позволяющим не проходить по всем файлам.
В этом случае поиск будет быстрее.

Вопрос. Как осуществляется поиск: первым случаем или вторым?


Palladin   (2009-08-10 11:37:00) [33]


> [2] DevilDevil ©   (10.08.09 11:28)

что быстрее или нет?


DevilDevil   (2009-08-10 11:37:00) [34]

Анатолий, я не понял


Anatoly Podgoretsky   (2009-08-10 11:29:00) [35]


> Какой поиск быстрее: по всем файлам/папкам или по маске
> ?

А это от ситуации зависит, может и быстрее и медленнее. Кроме того основаная проблема это дисковые операции.


DevilDevil   (2009-08-10 11:28:00) [36]

Так ответ. Быстрее или нет? Если да, то насколько?


DrPass   (2009-08-10 11:27:00) [37]

Поиск по маске - это функция операционной системы, и FindFirst/FindNext в обоих случаях ничего сами не фильтруют, а просто передают ей параметры твоего запроса. Насчет крутых механизмов... ну, все стандартное. Дисковый кэш - это крутой механизм?


Страницы:   1 2

Наверх

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