1 fifo
1.1. 原理
按照「先進先出(first in,first out)」的原理淘汰資料。
1.2. 實現
fifo佇列,具體實現如下:
1. 新訪問的資料插入fifo佇列尾部,資料在fifo佇列中順序移動;
2. 淘汰fifo佇列頭部的資料;
1.3. 分析
l 命中率
命中率很低,因為命中率太低,實際應用中基本上不會採用。
l 複雜度
簡單l 代價
實現代價很小。
2. second chance
2.1. 原理
fifo演算法的改進版,其思想是「如果被淘汰的資料之前被訪問過,則給其第二次機會(second chance)」。
2.2. 實現
每個資料會增加乙個訪問標誌位,用於標識此資料放入快取佇列後是否被再次訪問過。
如上圖,a是fifo佇列中最舊的資料,且其放入佇列後沒有被再次訪問,則a被立刻淘汰;否則如果放入佇列後被訪問過,則將a移到fifo佇列頭,並且將訪問標誌位清除。
如果所有的資料都被訪問過,則經過一次迴圈後就會按照fifo的原則淘汰資料。
2.3. 分析
l 命中率
命中率比fifo高。
l 複雜度
與fifo相比,需要記錄資料的訪問標誌位,且需要將資料移動。
l 代價
實現代價比fifo高。
3. clock
3.1. 原理
clock是second chance的改進版,通過乙個環形佇列,避免將資料在fifo佇列中移動。
3.2. 實現
如上圖,其具體實現如下:
l 當前指標指向c,如果c被訪問過,則清除c的訪問標誌,並將指標指向d;
l 如果c沒有被訪問過,則將新資料插入到c的位置,將指標指向d。
3.3. 分析
l 命中率
命中率比fifo高,和second chance一樣。
l 複雜度
與fifo相比,需要記錄資料的訪問標誌位,且需要將資料指標移動。
l 代價
實現代價比fifo高,比second chance低。
4. fifo類演算法對比
對比點對比
命中率clock = second chance > fifo
複雜度second chance > clock > fifo
代價second chance > clock > fifo
由於fifo類演算法命中率相比其他演算法要低不少,因此實際應用中很少使用此類演算法。
本文出處:
快取淘汰演算法
1.lru 1.1.原理 lru least recently used,最近最少使用 演算法根據資料的歷史訪問記錄來進行淘汰資料,其核心思想是 如果資料最近被訪問過,那麼將來被訪問的機率也更高 1.2.實現 最常見的實現是使用乙個鍊錶儲存快取資料,詳細演算法實現如下 1.新資料插入到鍊錶頭部 2....
快取淘汰演算法 LRU
1.lru 1.1.原理 lru least recently used,最近最少使用 演算法根據資料的歷史訪問記錄來進行淘汰資料,其核心思想是 如果資料最近被訪問過,那麼將來被訪問的機率也更高 1.2.實現 最常見的實現是使用乙個鍊錶儲存快取資料,詳細演算法實現如下 1.新資料插入到鍊錶頭部 2....
LRU 快取淘汰演算法
1.介紹 lru是leastrecentlyused近期最少使用演算法。記憶體管理的一種頁面置換演算法,對於在記憶體中但又不用的資料塊 記憶體塊 叫做lru,oracle會根據哪些資料屬於lru而將其移出記憶體而騰出空間來載入另外的資料。lru least recently used,最近最少使用 ...