Библиотеки мемоизации для C?

Для проекта, над которым я работаю, есть ряд состояний, в которых вычисления могут дать те же результаты (и не имеют побочных эффектов). Очевидным решением было бы использовать мемоизацию для всех дорогостоящих функций.

Мне нужно было бы иметь мемоизацию, которая обрабатывает более одного состояния (чтобы я мог аннулировать один набор кэша, не делая недействительным другой). Кто-нибудь знает хорошую библиотеку C для такого рода вещей? (Обратите внимание, что это не может быть C ++, мы говорим о C.)

Я работал с некоторыми хорошими реализациями на Python, которые используют декораторы, чтобы иметь возможность гибко запоминать кучу различных функций. Мне как бы интересно, есть ли общая библиотека, которая могла бы делать аналогичные вещи с C (хотя, вероятно, с явным переносом функций, а не с удобным синтаксисом). Я просто думаю, что было бы глупо добавлять кэширование для каждой функции по отдельности, когда это достаточно распространенная проблема, для которой должны быть какие-то готовые решения.

Я бы хотел найти следующие характеристики:

  1. Может кэшировать функции с различными типами ввода и вывода
  2. Управляет несколькими разными кешами (так что вы можете иметь краткосрочное и долгосрочное кеширование)
  3. Имеет хорошие функции для аннулирования кешей
  4. Предназначен для использования путем обертывания функций вместо изменения существующих функций

Кто-нибудь знает реализацию C, которая может обрабатывать все или большинство из этих требований?

27
задан Namey 20 May 2011 в 01:44
поделиться