Eu acho que a melhor resposta é que depende. Na minha experiência, existem muitos fatores na escolha de algoritmos de cache.
Fatores a considerar
- Saldo de leitura / gravação. (Qual a porcentagem de acessos são leituras versus gravações)
- Quantidade de cache.
- Tipo de mídia atrás do cache. (Eles são drives SATA lentos ou SSD velozes?)
- Hits vs Misses. (Com que frequência as coisas são reescritas ou relidas?)
- Tamanho médio de acesso (isso depende da escolha do tamanho da página)
- Quão caras são as leituras e gravações.
Depois de considerar todos os fatores diferentes, você precisará encontrar um algoritmo de cache que lide melhor com isso. Por exemplo, digamos que você tenha um aplicativo em que haja muitas gravações, algumas reescritas, leituras de dados gravados recentemente e algum tipo de mídia rotativa. Nesse caso, você deseja um tipo de algoritmo de cache híbrido. Para manipular os dados de gravação, convém algo como Wise order of Writes (WOW) e um algoritmo LRU para dados que foram lidos a partir do disco. A razão para isso é que os acessos ao disco são muito caros e o algoritmo WOW tornará mais eficiente a gravação de dados e a LRU manterá os dados acessados com frequência sempre em cache.
Digamos que você tenha discos SSD, com tempo de acesso muito rápido, convém escolher o algoritmo LRU, já que os acessos a disco são relativamente baratos.
Então, realmente, o que eu quero dizer é que não há uma "melhor" resposta. A melhor resposta é conhecer os fatores que se aplicam a você e escolher um algoritmo que melhor lide com eles.
Como encontrar o algoritmo para você
Perfile seu sistema. Isso geralmente envolve adicionar código para manter as estatísticas dos acessos à memória. Ao criar um perfil, você pode ver quais fatores são mais importantes para você.
No passado, eu adicionei código para rastrear todos os acessos à memória durante um período de tempo. Depois, procuro padrões. Eu procuro releituras, reescritas, acesso seqüencial, acesso aleatório, etc.
Depois de identificar as coisas importantes, é necessário examinar todos os diferentes tipos de algoritmos de armazenamento em cache para ver qual manipula quais são as melhores.