LRU、LFU、FIFO演算法總結
阿新 • • 發佈:2019-02-14
一、概述
(1)FIFO:First In First Out,先進先出(2)LRU:Least Recently Used,最近最少使用
(3)LFU:Least Frequently Used,最不經常使用
FIFO表示先進先出,類似於對列,在資料的結構上使用對列來實現。 結構圖:
1. 新訪問的資料插入FIFO佇列尾部,資料在FIFO佇列中順序移動;
2. 淘汰FIFO佇列頭部的資料;
LRU表示很少使用演算法,其核心思想是“如果資料最近被訪問過,那麼將來被訪問的機率也更高”。
最常見的實現是使用一個連結串列儲存快取資料,結構圖如下:
1. 新資料插入到連結串列頭部;
2. 每當快取命中(即快取資料被訪問),則將資料移到連結串列頭部;
3. 當連結串列滿的時候,將連結串列尾部的資料丟棄。
LFU表示最不經常使用的演算法,其核心思想是“如果資料過去被訪問多次,那麼將來被訪問的頻率也更高”。
結構圖:
1. 新加入資料插入到佇列尾部(因為引用計數為1);
2. 佇列中的資料被訪問後,引用計數增加,佇列重新排序;
3. 當需要淘汰資料時,將已經排序的列表最後的資料塊刪除。
參考:http://blog.csdn.net/quitepig/article/details/8045187 http://flychao88.iteye.com/blog/1977653