假设我有一些功能Func<int,int,int>
。现在我想缓存(并快速查找)函数结果。
要求:
- 固定缓存大小(例如,1000 个三元组(输入、输入、结果))。
- 在缓存中快速查找和快速存储。
- 如果缓存已满,则应删除最长时间未访问(查找)的条目。
应该使用什么样的数据结构?
假设我有一些功能Func<int,int,int>
。现在我想缓存(并快速查找)函数结果。
要求:
应该使用什么样的数据结构?
使用 .NET Cache,或使用MemoryCache,这是一个非 Web 特定的缓存。
您可以使用CacheMemoryLimit属性指定缓存可以使用的内存量。
当缓存已满时,您可以修剪所需百分比的条目,并且将根据需要删除条目:
...条目将根据最近最少使用 (LRU) 算法从缓存中删除,直到达到请求的修剪百分比
缓存中每个项目的键都需要是一个字符串,所以我会将您的输入格式化为{0}-{1}
或类似。您可能想要执行一些性能测试以满足您的要求,但我相信这将与任何其他解决方案一样快。