Saat mencari kecocokan dengan grep
, saya sering melihat bahwa pencarian berikutnya memakan waktu jauh lebih sedikit daripada yang pertama - misalnya 25s vs 2s. Jelas, itu bukan dengan menggunakan kembali struktur data dari jalankan terakhir - yang seharusnya sudah dialokasikan. Menjalankan time
perintah grep
, saya perhatikan fenomena menarik:
real 24m36.561s
user 1m20.080s
sys 0m7.230s
Kemana sisa waktu pergi? Adakah yang bisa saya lakukan untuk membuatnya berlari cepat setiap saat? (mis. meminta proses lain membaca file, sebelum grep
mencarinya.)
sumber
TL;DR
jawabannya adalah "[blok menunggu] I / O".cat
+grep
masih akan memakan waktu lebih lama daripadagrep
sendirian.cat
sebagai pre-fetch murah saat Anda melakukan hal lain, sebagai persiapan untukgrep
minat.cat
s dengantac
efek yang sama dan penggunaan RAM yang lebih tinggi: D Atau semua kucing dengan tacDalam lingkungan penyimpanan jaringan, ada juga penundaan yang relatif signifikan ketika Anda pertama kali mengakses file yang berada di "filer" yang terpisah dari server. Setelah file itu diakses di server, itu akan di-cache secara lokal dan selanjutnya akses ke data akan jauh lebih cepat.
Berikut ini eksperimen yang hanya menghitung checksum dari data file - bukan grep. Doa pertama lambat, dan yang berikutnya cepat.
sumber