LRUとLFUの違いは何ですか?
2023-08-27 22:56:35
質問
とはどのような違いがあるのでしょうか? LRU と LFU キャッシュの実装は?
LRUを実装するのに
LinkedHashMap
.
しかし、LFUキャッシュはどのように実装するのでしょうか?
どのように解決するのですか?
以下、キャッシュ容量が3で、常にキャッシュ要求がある場合を考えてみましょう。
A, B, C, A, A, A, A, A, A, A, A, A, A, A, B, C, D
を考えるだけなら 最近使ったもの(LRU) キャッシュを HashMap + 二重リンクリストの実装で、立ち退き時間 O(1) とロード時間 O(1) で考えると、上記のようにキャッシュ要求を処理しながら、以下の要素がキャッシュされることになります。
[A]
[A, B]
[A, B, C]
[B, C, A] <- a stream of As keeps A at the head of the list.
[C, A, B]
[A, B, C]
[B, C, D] <- here, we evict A, we can do better!
この例を見ると、もっと良い方法があることが簡単にわかります。将来的にAを要求する可能性がより高いことを考えると、たとえそれが最も最近使われたとしても、それを退去させるべきではないでしょう。
A - 12
B - 2
C - 2
D - 1
最低使用頻度 (LFU) キャッシュはこの情報を利用し、キャッシュ要求が何回使われたかを追跡し、退去アルゴリズムに利用します。
関連
-
[解決済み] コンフリクトミスvsコンパルソリーミス
-
[解決済み] TLBシュートダウンとは何ですか?
-
[解決済み] FIFOキャッシュとLRUキャッシュの比較
-
[解決済み] Flash CS4が手放せなくなる
-
[解決済み] ウェブサイト制作のためのChromeキャッシュの無効化
-
[解決済み] キャッシュフレンドリーコードとは何ですか?
-
[解決済み] Cache-Control: max-age=0とno-cacheの違いは何ですか?
-
[解決済み] Redisキャッシュとメモリ直接使用との比較
-
[解決済み] JavaでLRUキャッシュを実装するとしたら、どのようにしますか?
-
[解決済み] Redis: 配列やソートされたセットの要素を失効させることは可能か?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] コンフリクトミスvsコンパルソリーミス
-
[解決済み] コンフリクトミスとキャパシティミスの違いについて
-
[解決済み] FIFOキャッシュとLRUキャッシュの比較
-
[解決済み] キャッシュとキャッシュヒット/ミスについていくつか質問があります。
-
[解決済み] ライトバックキャッシングとライトスルーキャッシングの違いは?
-
[解決済み】Redisは単なるキャッシュなのか?
-
[解決済み】開発機でAngularJSの部分的なキャッシュを無効にする
-
[解決済み] Redisキャッシュとメモリ直接使用との比較
-
[解決済み] Notepad++のキャッシュファイルの場所
-
[解決済み] Redis: 配列やソートされたセットの要素を失効させることは可能か?