En regardant spécifiquement Dolphin avec Baloo, il semble rechercher les métadonnées de chaque fichier de son domaine de recherche, même si vous effectuez une recherche simple de nom de fichier. Lorsque je trace le file.so
processus, je vois des appels à lstat
, getxattr
et getxattr
encore pour chaque fichier, et même pour des ..
entrées. Ces appels système récupèrent des métadonnées sur le fichier qui sont stockées à un emplacement différent du nom de fichier (le nom de fichier est stocké dans le contenu du répertoire, mais les métadonnées sont dans l' inode ). Interroger les métadonnées d'un fichier à plusieurs reprises est peu coûteux, car les données se trouvent dans le cache du disque, mais il peut y avoir une différence significative entre interroger les métadonnées et ne pas les interroger.
find
est beaucoup plus intelligent. Il essaie d'éviter les appels système inutiles. Il n'appelle pas getxattr
car il ne recherche pas en fonction d'attributs étendus. Lorsqu'il traverse un répertoire, il peut être nécessaire d'appeler lstat
des noms de fichiers ne correspondant pas car il peut s'agir d'un sous-répertoire dans lequel effectuer une recherche récursive ( lstat
c'est l'appel système qui renvoie les métadonnées du fichier, y compris le type de fichier, tel que / directory / symlink /…). Cependant, il find
a une optimisation: il sait combien de sous-répertoires un répertoire a de son nombre de liens et il arrête d'appeler lstat
dès qu'il sait qu'il a parcouru tous les sous-répertoires. En particulier, dans un répertoire feuille (un répertoire sans sous-répertoires),find
vérifie seulement les noms, pas les métadonnées. De plus, certains systèmes de fichiers conservent une copie du type de fichier dans l’entrée du répertoire, ce qui find
évite même d’appeler lstat
si c’est la seule information dont il a besoin.
Si vous utilisez find
des options nécessitant une vérification des métadonnées, les lstat
appels seront plus nombreux , mais aucun lstat
appel ne sera toujours effectué sur un fichier s'il n'a pas besoin des informations (par exemple, le fichier est exclu par une condition antérieure. correspondant sur le nom).
Je suppose que les autres outils de recherche d'interface graphique qui réinventent la find
roue sont également moins intelligents que l'utilitaire de ligne de commande, qui a subi des décennies d'optimisation. Dolphin, du moins, est suffisamment intelligent pour utiliser la base de données de localisation si vous effectuez une recherche «partout» (avec la limitation qui n’est pas claire dans l’UI que les résultats risquent d’être obsolètes).