You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LRU缓存算法命中问题咨询:为何18和22应判定为命中?

缓存命中/缺失逻辑疑问:无重复地址为何出现命中?

我已经为这个问题研究了数周,只差理解最后这部分逻辑就能完成。

我有一个包含以下内容的文件:

10
20
22
18
E10
210
12

运行的命令为:

./lrucache -m 64 -s 4 -e 0 -b 4 -i address01 -r lru

其中各参数含义如下:

  • m:位大小
  • 2^s:组数量
  • 2^e:行数量
  • 2^b:块大小

我需要用LRU(最近最少使用)算法统计缓存的命中/缺失情况,预期18和22应该是命中。但目前我的实现得到的全是缺失——在我看来这是合理的,因为文件里没有重复值,每次新增地址都会通过LRU淘汰旧项,所以应该全是缺失。我测试过在文件末尾添加另一个210,此时会出现命中,说明程序基本功能正常,但肯定缺了关键逻辑。

我没附上代码,因为我觉得自己可能对缓存的某部分原理存在认知盲区。难道需要先预缓存一次不统计命中/缺失,再进行正式统计?我实在想不通无重复值的情况下为何会出现命中。有没有人能解释为什么18和22应该被判定为命中?

内容的提问来源于stack exchange,提问作者tristan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:40:37