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

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

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

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

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

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

    Означает ли это, что дополнительный код для GNOME должен быть написан на C89?

5
задан Fred Nurk 20 May 2011 в 02:33
поделиться