У меня есть программный проект, который создает серию значений отпечатков пальцев (хэш) из объектов различного размера. Конечно, чем больше размер объекта, тем дороже вычисление хэша. Хеши используются для сравнительных целей.
Теперь я хочу кешировать хеш-значения, чтобы повысить производительность последующих сравнений. Для любой записи в кэше у меня есть следующие метрики:
- Количество хитов
- дата / время последнего изменения
- размер объекта хешируется
Итак, к моему вопросу. Учитывая необходимость ограничить размер кэша (ограничить его определенным количеством записей), каков сбалансированный подход к замене элементов кэша?
Очевидно, что более крупные объекты хэшируются дороже, поэтому их нужно хранить как можно дольше. Однако я хочу избежать ситуации, когда заполнение кэша большим количеством больших объектов не позволит кэшировать будущие (более мелкие) элементы.
Итак, основываясь на доступных мне метриках (см. Выше), я ищу хорошую «формулу» общего назначения для истечения (удаления) записей кэша, когда кэш заполнен.
Все мысли, комментарии приветствуются.