私は、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個の障害を生成します。
これは受け入れられたケースですか?
私は、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個の障害を生成します。
これは受け入れられたケースですか?
thisが役に立ちます。 LRU
は非常に控えめです。
携帯キーボードにはLFU
が使用されています。いくつかの文字を入力すると、入力した文字と一致するキーボードの上部にいくつかの候補単語が表示されます。開始時にキーボードのcache
が空の場合、これらの4つの単語が表示されることがあります(文字「STA」と入力したと仮定します)。ここでのアイデアは、使用する言葉に基づいて、特定の時間の後に提案内のLRU
という単語を無視することです。あなたがそれを使用していない場合、あなたは後でsuggesionsの単語 "staff"を見ることができないかもしれません。
データがかなり反復的であることがわかっている場合は、必ずLFU
にアクセスしてcache
が不足するのを避けてください。 これらは両方とも独立しており、独立した意味を持っているようです。これは、これらのいずれかを使用するユースケースに依存します。
LRUは小さなキャッシュでは効率的ですが、大きなキャッシュにはスケーリングが不十分です。これらの中で、キャッシュの典型的なZipfワークロードが支配的であるため、LFUはしばしばより低い容量でより高いヒット率を有する。 LRUはスキャン(データベースなど)でも問題があり、しばしばバイパスされます。現代の政策は、より理想的なバランスを見つけるために2つを組み合わせます。 –