Для проекта, над которым я работаю, существует ряд состояний, в которых расчеты могут быть использованы для возврата тех же результатов (и не имеют побочных эффектов). Очевидным решением было бы использовать memoization для всех дорогостоящих функций.
Мне нужно будет иметь memoization, который обрабатывает несколько состояний (так что я могу сделать недействительным один кеш-набор без отмены другого). Кто-нибудь знает хорошую библиотеку C для такого рода вещей? (Обратите внимание, что это не может быть С++, мы говорим C.)
Я работал с некоторыми хорошими реализациями на Python, которые используют декораторы, чтобы иметь возможность гибко запоминать кучу различных функций. Я немного удивляюсь, есть ли общая библиотека, которая могла бы делать подобные вещи с C (хотя, вероятно, с явной функцией wrapping, а не с удобным синтаксисом). Я просто думаю, что было бы глупо добавлять кэш-память для каждой функции по отдельности, если это достаточно распространенная проблема, для этого должны быть некоторые готовые решения.
Я бы хотел найти следующие характеристики:
- Можно кэшировать функции с различными типами ввода и вывода
- Управляет несколькими различными кешами (так что вы можете иметь кратковременное и долгосрочное кэширование).
- Имеет хорошие функции для недействительности кешей
- Предназначен для использования путем переноса функций, а не для изменения существующих функций.
Кто-нибудь знает реализацию C, которая может обрабатывать все или большинство этих реквизитов?