2017-06-03 104 views
0

我一直在试图找到一个很好的例子,其中LFU比LRU好,但我不确定。在哪种情况下LFU比LRU好?

当我有容量为3的缓存并且缓存请求为4(如ABCD)但是更常请求C和D时,我设法做了什么(但不确定它是否是一个好例子) 。

所以如果请求流为A B C D C A D B D C A B A C D LRU将产生10个故障,但LFU会产生9个故障。

这是公认的案例吗?

+0

LRU对于小型缓存更有效,但对较大的缓存较小。其中,高速缓存的典型Zipf工作负载占主导地位,所以LFU在低容量时通常具有更高的命中率。 LRU在扫描(例如数据库)中也存在问题,并且经常被忽略。现代政策将两者结合起来,找到更理想的平衡点。 –

回答

0

您可能会感兴趣this对您有所帮助。 LRU是相当明星前锋。您的手机键盘使用LFU。当您键入一些字母时,您可以在键盘顶部看到与您键入的字母相匹配的几个建议字词。在开始键盘应用程序cache为空时,它可能会显示这4个单词(假设您输入了字母“STA”,建议的单词可能会像例如start,stand,statue,staff一样弹出)。这里的想法是,根据你使用的单词,它会在一段时间后忽略建议中的单词LRU。如果你以后没有使用过,你可能在后面的提示中看不到“职员”一词。

如果你有一个情况,你知道数据是相当重复的,肯定会去LFU,以避免cache错过。 看起来这两者都相当独立并具有孤立意义。这取决于您想要使用这些中的哪一个的用例。