Saya kira jawaban terbaik adalah itu tergantung. Dalam pengalaman saya, ada banyak faktor yang masuk ke dalam memilih algoritma caching.
Faktor yang perlu dipertimbangkan
- Baca / Tulis Saldo. (Berapa persentase akses yang dibaca vs yang ditulis)
- Jumlah cache.
- Jenis media di balik cache. (Apakah drive SATA lambat atau drive SSD cepat?)
- Hits vs Misses. (Seberapa sering hal-hal ditulis ulang atau dibaca kembali?)
- Ukuran akses rata-rata (Ini berlaku untuk memilih ukuran halaman)
- Betapa mahalnya membaca dan menulis.
Setelah Anda mempertimbangkan semua faktor yang berbeda, Anda perlu menemukan algoritma cache yang menangani yang terbaik. Misalnya katakan bahwa Anda memiliki aplikasi di mana ada banyak penulisan, beberapa penulisan ulang, membaca data yang baru ditulis dan semacam media pemintalan. Dalam hal ini Anda ingin semacam algoritma caching hybrid. Untuk menangani data tulis, Anda mungkin menginginkan sesuatu seperti Wise order of Writes (WOW) dan algoritma LRU untuk data yang telah dibaca dari disk. Alasan untuk ini adalah bahwa akses disk sangat mahal dan algoritma WOW akan membuatnya lebih efisien untuk menulis data dan LRU akan menyimpan data yang sering diakses selalu dalam cache.
Katakanlah Anda memiliki disk SSD, yang memiliki waktu akses sangat cepat, Anda mungkin ingin mengarahkan pilihan Anda ke algoritma LRU karena akses disk relatif murah.
Jadi sebenarnya yang ingin saya katakan adalah tidak ada jawaban "terbaik". Jawaban terbaik adalah mengetahui faktor-faktor yang berlaku untuk Anda dan memilih algoritma yang paling baik menanganinya.
Bagaimana menemukan algoritme untuk Anda
Profil sistem Anda. Ini biasanya melibatkan penambahan kode untuk menjaga statistik untuk akses memori. Dengan membuat profil, Anda dapat melihat faktor mana yang paling penting bagi Anda.
Di masa lalu saya telah menambahkan kode untuk melacak semua akses memori selama periode waktu tertentu. Kemudian saya mencari polanya. Saya mencari membaca ulang, menulis ulang, akses sekuensial, akses acak, dll.
Setelah Anda mengidentifikasi hal-hal penting, Anda perlu melihat semua jenis algoritma caching untuk melihat mana yang menangani hal-hal terbaik.