Melihat Dolphin dengan Baloo secara khusus, tampaknya mencari metadata setiap file dalam domain pencariannya, bahkan jika Anda melakukan pencarian nama file sederhana. Ketika saya melacak file.so
proses, saya melihat panggilan ke lstat
, getxattr
dan getxattr
lagi untuk setiap file, dan bahkan untuk ..
entri. Panggilan sistem ini mengambil metadata tentang file yang disimpan di lokasi yang berbeda dari nama file (nama file disimpan dalam isi direktori, tetapi metadata berada di inode ). Meminta metadata file berkali-kali adalah murah karena data akan berada di cache disk, tetapi mungkin ada perbedaan yang signifikan antara meminta metadata dan tidak meminta metadata.
find
jauh lebih pintar. Mencoba menghindari panggilan sistem yang tidak perlu. Itu tidak akan memanggil getxattr
karena tidak mencari berdasarkan atribut yang diperluas. Ketika melintasi direktori, mungkin perlu memanggil lstat
nama file yang tidak cocok karena itu mungkin subdirektori untuk mencari secara rekursif ( lstat
adalah panggilan sistem yang mengembalikan metadata file termasuk jenis file seperti biasa / direktori / symlink / ...). Namun find
memiliki pengoptimalan: ia tahu berapa banyak subdirektori yang dimiliki suatu direktori dari jumlah tautannya , dan ia berhenti memanggil lstat
begitu ia mengetahui bahwa subdirektori melintasi semua subdirektori. Secara khusus, dalam direktori daun (direktori tanpa subdirektori),find
hanya memeriksa nama, bukan metadata. Selain itu beberapa sistem file menyimpan salinan jenis file dalam entri direktori sehingga find
bahkan tidak perlu memanggil lstat
jika hanya itu informasi yang diperlukan.
Jika Anda menjalankan find
dengan opsi yang perlu memeriksa metadata, itu akan membuat lebih banyak lstat
panggilan, tetapi itu tetap tidak akan membuat lstat
panggilan pada file jika tidak memerlukan informasi (misalnya karena file tersebut dikecualikan oleh kondisi sebelumnya sesuai dengan namanya).
Saya menduga bahwa alat pencarian GUI lain yang menemukan kembali find
roda sama kurang pintar dari utilitas baris perintah yang telah mengalami beberapa dekade optimasi. Dolphin, setidaknya, cukup pintar untuk menggunakan basis data lokasi jika Anda mencari "di mana-mana" (dengan batasan yang tidak jelas di UI bahwa hasilnya mungkin kedaluwarsa).