C的记忆库?

| 对于我正在从事的项目,有许多州可以依靠计算来返回相同的结果(并且没有副作用)。显而易见的解决方案是对所有昂贵的功能使用备忘录。 我将需要具有处理多个状态的备注(以便我可以使一个缓存集无效而不使另一个缓存集无效)。有人知道这种事情不错的C库吗? (请注意,它不能是C ++,我们是在说C。) 我已经在Python中使用了一些很好的实现,这些实现使用装饰器来灵活地记住许多不同的函数。我想知道是否有一个通用库可以用C做类似的事情(尽管可能使用显式函数包装而不是方便的语法)。我只是认为,当一个常见的问题必须要有一些现成的解决方案时,必须为每个函数分别添加缓存是很愚蠢的。 我要寻找的特征如下: 可以缓存具有各种类型的输入和输出的功能 管理多个不同的缓存(因此您可以进行短期和长期缓存) 具有使缓存无效的良好功能 打算由包装功能使用,而不是更改现有功能 有人知道可以处理所有或大多数这些要求的C实现吗?     
已邀请:
好的,看到没有C的备忘库,并且我正在寻找一种用于在代码库中备忘现有C函数的嵌入式解决方案,我制作了自己的小备忘库,将在APL 2.0下发布。希望人们会发现它有用,并且不会崩溃并在其他编译器上燃烧。如果确实有问题,请在这里告诉我,我会在有时间的时候进行调查(可能以月为增量进行衡量)。 该库不是为了提高速度而构建的,但是它可以工作并且已经过测试,以确保它使用起来相当简单,并且在我的测试中不会显示任何内存泄漏。从根本上讲,这使我可以将备忘录添加到类似于我在Python中使用的装饰器模式的功能。 该库当前在SourceForge上作为C备忘库。它带有一些用户手册和一些用于通用哈希的第三方许可库。如果位置更改,我将尝试更新此链接。我发现这对我的项目很有帮助,希望其他人会发现对他们的项目有用。     
记忆几乎已内置在haskell语言中。您可以从c调用此功能 更新: 我仍在学习函数式编程,但是我确实知道记忆化在函数式编程中相当普遍,因为语言功能使其变得容易。我正在学习f#。我不知道haskell,但这是我所知道的唯一可以与c交互的功能语言。您也许可以找到一种比haskell提供的功能更合适的与c交互的函数式编程语言。     
为什么,只是不能成为C ++? 只是作为起点,请看一下此记忆功能: 宣言:
template<typename T, typename F>
auto Memoize(T key, F function) {
  static T memory_key = key;
  static auto memory = function(memory_key);
  if (memory_key != key) {
    memory_key = key;
    memory = function(memory_key);
  }

  return memory;
}
用法示例:
auto index = Memoize(value, IndexByLetter);
    

要回复问题请先登录注册