缓存功能结果

时间:2013-01-11 04:04:44

标签: c# algorithm caching data-structures

假设我有一些功能Func<int,int,int>。现在我想缓存(并快速查找)函数结果。

要求:

  1. 修正了缓存大小(例如,1000个三元组(输入,输入,结果))。
  2. 在缓存中快速查找和快速存储。
  3. 如果缓存已满,则应删除未访问(查找)最长时间的条目。
  4. 应该使用什么样的数据结构?

1 个答案:

答案 0 :(得分:1)

使用.NET Cache,或使用MemoryCache,这是非特定于网络的缓存。

您可以使用CacheMemoryLimit属性指定缓存可以使用的内存量。

当缓存已满时,您可以Trim所需的条目百分比,并根据需要删除条目:

  

...将根据最近最少使用(LRU)算法从缓存中删除条目,直到达到请求的修剪百分比

缓存中每个项目的键必须是一个字符串,因此我将输入格式设置为{0}-{1}或类似。您可能希望执行一些性能测试以满足您的要求,但我相信这将与任何其他解决方案一样快。