Saya telah memperhatikan bahwa menjalankan berikutnya grep
pada permintaan yang sama (dan juga permintaan yang berbeda, tetapi pada file yang sama) jauh lebih cepat daripada yang pertama dijalankan (efeknya mudah terlihat ketika mencari melalui file besar).
Ini menunjukkan bahwa grep menggunakan semacam caching dari struktur yang digunakan untuk pencarian, tetapi saya tidak dapat menemukan referensi di Internet.
Mekanisme apa yang memungkinkan grep
untuk mengembalikan hasil lebih cepat dalam pencarian berikutnya?
Sistem Linux dan * NIX menggunakan berbagai cache yang berada di antara sistem file (disarikan melalui VFS) dan proses tingkat pengguna. Jadi ini bukan grep dan bukan filesystem yang melakukan caching - ini adalah sistem operasinya.
Cache yang bertanggung jawab atas kinerja grep Anda adalah Cache Buffer VFS. Tembolok lain adalah untuk inode dan direktori tetapi itu tidak akan berlaku di sini.
Untuk info lebih lanjut, lihat: Proyek Dokumentasi Linux: 9.2 Sistem File Virtual http://tldp.org/LDP/tlk/fs/filesystem.html
sumber
/usr/include
waktu ~ 16,4 detik pada sistem saya dengan semua cache dijatuhkan. Dengan segala yang di-cache, sekitar 0,3 detik. Jika saya menjatuhkan hanya halaman cache (yang menyimpan cache buffer), dibutuhkan ~ 14,3 detik. Jika saya meninggalkan halaman cache dan menjatuhkan cache dentry / inode, itu sekitar 12 detik.Dan jika Anda sedang mencari versi cache dari grep, periksa https://stackoverflow.com/questions/7734596/grep-but-indexable
sumber