Я думаю, что лучший ответ, что это зависит. По моему опыту, существует множество факторов, влияющих на выбор алгоритмов кэширования.
Факторы, чтобы рассмотреть
- Чтение / запись баланса. (Какой процент обращений - чтение против записи)
- Объем кеша.
- Тип носителя за кешем. (Это медленные диски SATA или быстрые SSD?)
- Хиты против Мисс. (Как часто вещи переписываются или перечитываются?)
- Средний размер доступа (это касается выбора размера страницы)
- Насколько дорого читает и пишет.
После того, как вы рассмотрите все различные факторы, вам нужно найти алгоритм кеширования, который лучше всего справится с этим. Например, скажем, что у вас есть приложение, в котором много записей, некоторые перезаписи, чтения недавно записанных данных и что-то вроде вращающегося носителя. В этом случае вам нужен гибридный алгоритм кэширования. Для обработки данных записи вам может понадобиться что-то вроде Wise order of Writes (WOW) и алгоритм LRU для данных, считанных с диска. Причина этого заключается в том, что доступ к диску очень дорогой, а алгоритм WOW сделает его более эффективным для записи данных, а LRU будет хранить часто используемые данные всегда в кеше.
Допустим, у вас есть SSD-диски, которые имеют очень короткое время доступа, возможно, вы захотите переключиться на алгоритм LRU, поскольку доступ к дискам относительно недорог.
Так что на самом деле я хочу сказать, что нет «лучшего» ответа. Лучший ответ - знать факторы, которые относятся к вам, и выбрать алгоритм, который лучше всего их обрабатывает.
Как найти алгоритм для вас
Профиль вашей системы. Обычно это включает добавление кода для хранения статистики обращений к памяти. По профилированию вы можете увидеть, какие факторы наиболее важны для вас.
В прошлом я добавил код для отслеживания всех обращений к памяти за определенный период времени. Потом я поищу шаблоны. Я ищу перечитывания, перезаписи, последовательный доступ, произвольный доступ и т. Д.
После того, как вы определили важные вещи, вам нужно взглянуть на все различные типы алгоритмов кэширования, чтобы понять, какие из них лучше всего подходят.