Почему найти быстрее, чем найти? [дубликат]

На этот вопрос уже есть ответ здесь:

Я искал файл в моем источнике и пытался найти и найти. Удивительно, что locate искал на всей машине и был быстрее, чем find, который был поиск только в текущем каталоге и подкаталогах.

Вот мои команды оболочки для обоих:

find . -name vendorsetup.sh # takes 50 seconds to search all files in curren -sub directories.

locate vendorsetup.sh # takes 20 seconds to search file in whole machine.

Почему это?

7
задан 22 July 2014 в 07:27

2 ответа

locate использует базу данных и периодически делает материально-технические ресурсы Вашей файловой системы. База данных оптимизирована для поиска. find потребности пересечь целый подкаталог, который довольно быстр, но не с такой скоростью, как, располагаются.

11
ответ дан 23 November 2019 в 06:17

О найдите:

Найдите использует индекс, который хранит в /var/lib/slocate/, это обновляется ночным заданием Крона. Это ночное задание обычно работает около 1:00 или 2:00 местного времени и полностью сканирует Вашу всю систему (включая все подключенные диски). Получающийся индекс является просто списком имен файлов. Поиск будет так быстр из-за уже индексации, сделанной к каждому элементу в файловой системе

Но find не похож так,

каждый раз это рассмотрит поиск как новый поиск и никакое хранение любого кэша расположения файла.

таким образом, это займет время для нахождения.

надежда, которая помогает.

3
ответ дан 23 November 2019 в 06:17

Другие вопросы по тегам:

Похожие вопросы: