7 votes

Pourquoi localiser est plus rapide que trouver ?

Je cherchais un fichier dans ma source et j'ai essayé à la fois de localiser et de trouver. Étonnamment, locate cherchait dans toute la machine et était plus rapide que find, qui ne cherchait que dans le répertoire courant et les sous-répertoires.

Voici mes commandes Shell pour les deux :

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.

Pourquoi cela ?

11voto

Jos Points 23588

locate utilise une base de données et fait périodiquement l'inventaire de votre système de fichiers. La base de données est optimisée pour la recherche. find doit parcourir l'ensemble du sous-répertoire, ce qui est assez rapide, mais pas aussi rapide que locate.

3voto

Zian Choy Points 1510

A propos de Locate :

Locate utilise un index qui stocke dans /var/lib/slocate/ c'est-à-dire mis à jour par un travail Cron nocturne. Cette tâche nocturne est généralement exécutée vers 1 ou 2 heures du matin, heure locale, et scanne entièrement votre système (y compris tous les disques connectés). L'index résultant est simplement une liste de noms de fichiers. La recherche sera si rapide grâce à l'indexation déjà effectuée sur chaque élément du système de fichiers.

Mais find n'est pas comme ça,

à chaque fois, il considérera la recherche comme une nouvelle recherche et ne stockera pas de cache de l'emplacement du fichier.

donc ça va prendre du temps à trouver.

J'espère que cela vous aidera.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X