4 種 cache 替換策略對比
4 種 cache 替換策略對比
RAND, FIFO, LRU, LFU
實驗參考條件
參考的是我電腦上的 i7-10750H ,根據《Intel Core i7-10750H Processor 12M Cache up to 5.00 GHz 產品規範》顯示,這款 CPU 的快取容量大小為 12MB ,考慮到其有 6 個相同大小的核心,實際執行簡單程式時,基本上是單核心工作,我們將其進行平分為每個核 2MB (實際上 intel 處理器快取不止一層,實驗為了簡化模型,只採取一層模型)
個人考慮了 5 種常見的使用情況
- linar array random query / 線性表隨機訪問
- 2-demension random query / 二維隨機訪問
- binary tree query / 二叉樹式資料結構詢問
- DP trans / DP轉移
- Graph DFS / 圖DFS遍歷
根據根號分塊原理,我們採取 128 路組相聯對映方式
實驗結果
以下圖片都是 gif ,可以點開播放
1-2 隨機訪問
結果相差不大
|Cache 命中率|RAND|FIFO|LRU|LFU|
|---|---|---|---|---|---|
|一維|25.71|25.99|26.00|25.91|
|二維|25.69|25.97|25.96|25.96|
二叉樹式資料結構
區域性性原理在此體現的較為突出
二叉樹式資料結構能維護 set, map, heap 等資訊,是極為常見的資料結構,故 LRU, LFU 在時間上
||RAND|FIFO|LRU|LFU|
|---|---|---|---|---|---|
|Cache 命中率|90.29|90.49|91.81|92.76|
DP 轉移
由於 DP 轉移主要在時間上較為飽和,佔用空間普遍不多,測試了多種 DP 程式碼,cache 命中率普遍高於 99%
||RAND|FIFO|LRU|LFU|
|---|---|---|---|---|---|
|Cache 命中率|99.33|99.50|99.50|100.00|
圖的 DFS
||RAND|FIFO|LRU|LFU|
|---|---|---|---|---|---|
|Cache 命中率|7.52|7.72|7.72|7.69|
由於 DFS 耗時最大的主要是棧遞迴,在空間使用分佈上極為稀疏,cache 命中率普遍較低
總結
在 cache 快取對映方式較為合理、快取大小較大等條件下,四種替換策略差距並不是很大,考慮對 cache 空間的額外佔用, LFU 雖然在幾種情況下表現出了一定的時間上的優越性(主要在二叉式資料結構上),但結合空間上的佔用,總體可能並沒有明顯的優勢。