LRUキャッシュ淘汰アルゴリズム(チェーンテーブル)

1521 ワード

LRU(Least recently used)は最近、ポリシーアルゴリズムを最も少なく使用しています.
データの履歴アクセス記録(時間順)に基づいてデータを淘汰する.理念:1つのデータが最近アクセスされていない場合、将来アクセスされる可能性も小さく、キャッシュスペースがいっぱいになったとき、新しいキャッシュデータが入ってきたら、最も早いデータを削除する.
1.空のキャッシュチェーンテーブルの長さが5で、E=>D=>C=>B=>Aの順に入る.ABCDEの5つのノードのいずれかをキャッシュチェーンテーブルに追加する必要がある場合は、チェーンテーブルにこの値があるかどうかを確認し、存在する場合はノードを削除し、テーブルヘッダに再追加します.B => E => D => C => A 3.チェーンテーブルに新しいデータを挿入し、まず元のデータを遍歴し、存在するかどうか、存在しないかどうかは最後のノードを削除し、最新のノードをチェーンテーブルのヘッダーに置く.A => E => D => C => B
 public static void LRU()
        {
            //        3
            LinkedList l = new LinkedList();
            l.Insert(1);
            l.Insert(2);
            l.Insert(3);

            bool isExist = false;

            Node newNode = new Node(4);
            Node temp = l.Head;

            int i = 1;
            if (newNode.Data != temp.Data)
            {
                while (temp.Next != null)
                {
                    i++;
                    temp = temp.Next;
                    if (temp.Data == newNode.Data)//       
                    {
                        l.Delete(i);
                        l.Insert(newNode.Data,1);//        
                        break;
                    }
                }

                if (!isExist)
                {
                    l.Delete(i);//i =                 
                    l.Insert(newNode.Data, 1);//        
                }
            }
        }