C的记忆化库?

Nam*_*mey 27 c memoization

对于我正在研究的项目,有许多州可以依赖计算来返回相同的结果(并且没有副作用).显而易见的解决方案是对所有昂贵的功能使用memoization.

我需要有一个处理多个状态的memoization(这样我就可以使一个缓存集无效而不会使另一个缓存集无效).对于这种事情,有人知道一个好的C库吗?(注意它不能是C++,我们正在谈论C.)

我已经在Python中使用了一些很好的实现,它们使用装饰器来灵活地记忆一堆不同的函数.我有点想知道是否有一个通用库可以用C做类似的事情(尽管可能有明确的函数包装而不是方便的语法).我认为,当一个常见的问题必须有一些现成的解决方案时,必须单独为每个功能添加缓存是愚蠢的.

我要寻找的特征如下:

  1. 可以使用各种类型的输入和输出缓存函数
  2. 管理多个不同的缓存(这样您就可以进行短期和长期缓存)
  3. 具有使缓存无效的良好功能
  4. 旨在用于包装函数,而不是更改现有函数

有人知道可以处理所有或大部分这些必需品的C实现吗?

Nam*_*mey 11

好的,因为没有用于C的memoization库而我正在寻找一个用于在代码库中记忆现有C函数的插件解决方案,我创建了自己的小memoization库,我将在APL 2.0下发布.希望人们会发现这很有用,它不会在其他编译器上崩溃和烧毁.如果确实有问题,请在此留言,每当我有时间时(我可能会以几个月的增量来衡量),我会调查它.

这个库不是为了速度而构建的,但是它可以工作并且已经过测试,以确保它使用相当简单,并且在我的测试中不显示任何内存泄漏.从根本上说,这让我可以将memoization添加到类似于我在Python中习惯的装饰器模式的函数中.

该库目前在SourceForge上作为C-Memo库.它附带了一个小的用户手册和几个第三方允许的许可库,用于通用散列.如果位置发生变化,我会尝试更新此链接.我发现这有助于我的项目工作,希望其他人会发现它对他们的项目有用.