Özellikle Baloo ile Dolphin'e baktığımda, basit bir dosya adı araması yapsanız bile, arama alanındaki her dosyanın meta verilerini aramak gibi görünüyor. Ben iz zaman file.so
süreci, ben çağrıları bakın lstat
, getxattr
ve getxattr
yine her dosya için ve hatta için ..
girişler. Bu sistem çağrıları, dosya adından farklı bir konumda depolanan dosya hakkındaki meta verileri alır (dosya adı dizin içeriğinde depolanır, ancak meta veriler inode'dur ). Bir dosyanın meta verilerini birden çok kez sorgulamak, veriler disk önbelleğinde olacağı için ucuzdur, ancak meta verileri sorgulamakla meta verileri sorgulamak arasında önemli bir fark olabilir.
find
çok daha zeki. Gereksiz sistem çağrılarından kaçınmaya çalışır. Bu demeyeceksin getxattr
uzatılabilir niteliklere dayalı aramaz çünkü. Bir dizine geçtiğinde, lstat
eşleşmeyen dosya adlarını çağırması gerekebilir, çünkü yinelemeli olarak arama yapmak için bir alt dizin olabilir ( lstat
normal / directory / symlink /… gibi dosya türünü içeren dosya meta verilerini döndüren sistem çağrısıdır). Bununla birlikte find
, bir optimizasyon vardır: bir dizinin bağlantı sayısından kaç tane alt dizini lstat
olduğunu bilir ve tüm alt dizinleri geçtiğini bildiğinde bir kez daha durur . Özellikle, bir yaprak dizininde (alt dizinleri olmayan bir dizin),find
yalnızca verileri denetler, meta verileri değil. Ayrıca, bazı dosya sistemleri, dizin girişindeki dosya türünün bir kopyasını tutar; böylece, find
ihtiyaç lstat
duyduğu tek bilgi buysa, aramasına gerek kalmaz .
find
Meta verileri kontrol etmeyi gerektiren seçeneklerle çalışırsanız , daha fazla lstat
arama yapar, ancak lstat
bilgiye ihtiyaç duymuyorsa dosyada arama yapmaz (örneğin, dosya önceki bir koşulun dışında tutulduğu için) ismin eşleşmesi).
find
Tekerleği yeniden icat eden diğer GUI arama araçlarının, onlarca yıl süren optimizasyondan geçen komut satırı yardımcı programından benzer şekilde daha az akıllı olduğundan şüpheleniyorum . Dolphin, en azından, “her yerde” arama yaparsanız (veri tabanındaki sonuçların güncel olamayacağı konusunda bir sınırlama olmadan) bulma veritabanını kullanacak kadar zekidir.