gpt4 book ai didi

c# - 缓存条目替换算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:29 25 4
gpt4 key购买 nike

我有一个软件项目,可以根据不同大小的对象创建一系列指纹(哈希)值。当然,对象越大,散列的计算成本就越高。哈希用于比较目的。

我现在希望缓存哈希值以提高后续比较的性能。对于缓存中的任何给定条目,我有以下可用指标:

  • 点击次数
  • 最后修改日期/时间
  • 散列对象的大小

继续我的问题。鉴于需要限制缓存的大小(将其限制为特定数量的条目),什么是替换缓存项的均衡方法?

显然,较大的对象的散列成本更高,因此需要尽可能长时间地保存它们。但是,我想避免用大量大对象填充缓存会阻止 future (较小的)项目被缓存的情况。

因此,根据我可用的指标(见上文),我正在寻找一个很好的通用“公式”,用于在缓存变满时使缓存条目过期(删除)。

感谢所有想法和评论。

最佳答案

您需要考虑对象的性质。想想对象很快再次被调用的概率。并删除最不可能的对象。

这与您使用的软件和对象的性质非常相关。
如果在程序中连续使用它们,它们可能会遵守 Locality of reference原则。所以你应该使用 LRU(最近最少使用)算法。

如果命中数较高的对象更有可能被再次调用,则使用它(并删除最低的)。

看看Cache Algorithms

原则上需要计算:

最小(p*成本)

p = 再次调用的概率。
成本 = 再次缓存该对象的成本。

关于c# - 缓存条目替换算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com