Mirando específicamente a Dolphin con Baloo, parece buscar los metadatos de cada archivo en su dominio de búsqueda, incluso si está haciendo una simple búsqueda de nombre de archivo. Cuando trazo el file.so
proceso, veo llamadas a lstat
, getxattr
y getxattr
nuevamente para cada archivo, e incluso para las ..
entradas. Estas llamadas al sistema recuperan metadatos sobre el archivo que se almacena en una ubicación diferente del nombre del archivo (el nombre del archivo se almacena en el contenido del directorio, pero los metadatos están en el inodo ). Consultar los metadatos de un archivo varias veces es barato, ya que los datos estarían en el caché del disco, pero puede haber una diferencia significativa entre consultar los metadatos y no consultar los metadatos.
find
Es mucho más inteligente. Intenta evitar llamadas innecesarias al sistema. No llamará getxattr
porque no busca en función de atributos extendidos. Cuando atraviesa un directorio, es posible que necesite invocar lstat
nombres de archivo que no coinciden porque puede ser un subdirectorio para buscar de forma recursiva ( lstat
es la llamada al sistema que devuelve metadatos de archivo, incluido el tipo de archivo como regular / directorio / enlace simbólico / ...). Sin embargo, find
tiene una optimización: sabe cuántos subdirectorios tiene un directorio desde su recuento de enlaces , y deja de llamar lstat
una vez que sabe que ha recorrido todos los subdirectorios. En particular, en un directorio hoja (un directorio sin subdirectorios),find
solo verifica los nombres, no los metadatos. Además, algunos sistemas de archivos mantienen una copia del tipo de archivo en la entrada del directorio para que find
ni siquiera tenga que llamar lstat
si esa es la única información que necesita.
Si ejecuta find
opciones que requieren verificar los metadatos, realizará más lstat
llamadas, pero aún no hará una lstat
llamada en un archivo si no necesita la información (por ejemplo, porque el archivo está excluido por una condición previa coincidencia en el nombre).
Sospecho que otras herramientas de búsqueda de GUI que reinventan la find
rueda son igualmente menos inteligentes que la utilidad de línea de comandos que ha sufrido décadas de optimización. Dolphin, al menos, es lo suficientemente inteligente como para usar la base de datos de localización si busca "en todas partes" (con la limitación que no está clara en la interfaz de usuario de que los resultados pueden estar desactualizados).