2017-06-03 149 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錯過。 看起來這兩者都相當獨立並具有孤立意義。這取決於您想要使用這些中的哪一個的用例。