我应该为该缓存策略使用哪种数据结构?
我正在使用.NET 4.0应用程序,该应用程序在返回双精度数的两个双精度数上执行相当昂贵的计算。对数千项中的每一项执行此计算。这些计算是在Task线程池线程上执行的。 一些初步测试表明,一次又一次地执行相同的计算,因此我想缓存n个结果。当缓存满了,我想抛出了最不经常最近使用的项目。(编辑:我意识到至少经常没有意义,因为当缓存已满并且我将结果替换为新计算的结果时,那个结果将是最不常用的,并在下次计算新结果时立即替换并添加到缓存中) 为了实现这一点,我正在考虑使用Dictionary<Input, double>(其中Input将存储两个输入double值的微型类)存储输入和缓存的结果。但是,我还需要跟踪上次使用结果的时间。为此,我认为我需要第二个存储信息的集合,以便在缓存已满时从字典中删除结果。我担心不断对清单进行排序会对性能产生负面影响。 有没有更好的方法(例如性能更高的方法),或者甚至是我不知道的通用数据结构?为了确定解决方案的最优性,我应该进行哪些类型的分析/测量?