2013-01-11 69 views
1

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

要求:

  1. 固定高速缓存大小(比方说,例如,1000个三元组(输入,输入,结果))。
  2. 高速缓存中的快速查找和快速存储。
  3. 如果缓存已满,则应该删除最长时间未被访问(查找)的条目。

应该使用什么样的数据结构?

回答

1

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

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

当缓存满了,你可以Trim条目所需的百分比,并根据需要的条目将被删除:

...条目将从基于一个缓存中删除最近最少使用(LRU)算法,直到所要求的装饰百分比达到

在高速缓存中每个项目的关键必须是一个字符串,所以我格式化输入作为{0}-{1}或相似。您可能需要执行一些性能测试来满足您的要求,但我相信这将与其他任何解决方案一样快。