对于我正在从事的项目,有很多州可以依靠计算来返回相同的结果(并且没有副作用)。显而易见的解决方案是对所有昂贵的功能使用备忘录。

我将需要具有处理多个状态的备注(以便我可以使一个缓存集无效而不使另一个缓存集无效)。有人知道这种事情不错的C库吗? (请注意,它不能是C++,我们在谈论C。)

我已经在Python中使用了一些好的实现,这些实现使用装饰器来灵活地记住许多不同的函数。我想知道是否有一个通用库可以用C做类似的事情(尽管可能使用显式函数包装而不是方便的语法)。我只是认为,当这是一个非常普遍的问题,必须为它提供一些现成的解决方案时,必须为每个函数分别添加缓存是很愚蠢的。

我要寻找的特征如下:

  • 可以缓存具有各种类型的输入和输出
  • 的函数
  • 管理多个不同的缓存(因此您可以进行短期和长期缓存)
  • 具有使缓存无效的良好功能
  • 打算由包装功能使用,而不是更改现有功能

  • 有人知道可以处理所有或大多数这些要求的C实现吗?

    最佳答案

    好的,看到没有C的备忘库,并且我正在寻找一种用于在代码库中备忘现有C函数的嵌入式解决方案,我制作了自己的小备忘库,将在APL 2.0下发布。希望人们会发现它有用,并且不会崩溃并在其他编译器上燃烧。如果确实有问题,请在这里给我发消息,如果有时间,我会进行调查(可能以月为增量进行衡量)。

    这个库不是为了提高速度而构建的,但是它可以工作并且已经过测试,以确保它相当简单易用,并且在我的测试中不会显示任何内存泄漏。从根本上讲,这使我可以将备忘录添加到类似于Python中常用的装饰器模式的功能。

    该库目前在SourceForge上的名称为C-Memo Library。它带有一些用户手册和一些用于一般哈希的第三方许可库。如果位置更改,我将尝试更新此链接。我发现这对我的项目很有帮助,希望其他人会发现对他们的项目有用。

    09-30 19:47