1

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

要求:

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

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

4

1 回答 1

1

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

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

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

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

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

于 2013-01-11T04:09:05.600 回答