"LeastRecentlyUsedCache" (データ構造)
"LeastRecentlyUsedCache" (データ構造)
"LeastRecentlyUsedCache"
キーと値が一般式である,固定サイズのキャッシュを表す.
詳細
- 固定サイズのキャッシュテーブルは,キーを使って取り出すことができる個々の値を保存する.
-
CreateDataStructure["LeastRecentlyUsedCache",capacity] capacity 値全体のために新しい空の "LeastRecentlyUsedCache"を作成する CreateDataStructure["LeastRecentlyUsedCache",elems] elems を含む新しい"LeastRecentlyUsedCache"を作成する CreateDataStructure["LeastRecentlyUsedCache",cache, f] 指定のエビクション関数 f を含む新しい"LeastRecentlyUsedCache"を作成する Typed[x,"LeastRecentlyUsedCache"] x に"LeastRecentlyUsedCache"型を与える - "LeastRecentlyUsedCache"型のデータ構造には,以下の演算が使える.
-
ds["Capacity"] ds に保存できるキーと値のペアの最大数 time: O(1) ds["Copy"] ds のコピーを返す time: O(n) ds["EmptyQ"] ds にキーと値のペアが含まれない場合にはTrueを返す time: O(1) ds["Insert",keyvalue] 関連の value と一緒に key を ds に加え,何かがキャッシュから強制削除された場合にはTrueを返す time: O(1) ds["KeyDrop",key] key とその値を ds から省く time: O(1) ds["KeyDropAll"] すべてのキーとその値を ds から省く time: O(n) ds["KeyExistsQ",key] key が ds 内に存在する場合にはTrue time: O(1) ds["Keys"] ds のキーをリストとして返す time: O(n) ds["Length"] ds に保存されたキーと値のペアの数 time: O(1) ds["Lookup",key] ds 内に key と一緒に保存される値を返し,このキーを一番最後に使われた値とする.キーが見付からない場合には,Missingオブジェクトを返す time: O(1) ds["Lookup",key,defFun] ds 内に key と一緒に保存される値を返し,このキーを一番最後に使われた値とする.キーが見付からない場合には,defFun[key]を返す time: O(1) ds["Peek"] ds に保存される最新の値を返す time: O(1) ds["Peek",key] ds 内に key と一緒に保存される値を返す.このキーは一番最後に使われた要素とはしない. time: O(1) ds["RemoveOldest"] ds 内の最も古いキーと値のペアを削除する time: O(1) ds["Values"] ds の値をリストとして返す time: O(n) ds["Visualization"] ds の可視化を返す time: O(n) - 以下の関数もサポートする.
-
dsi===dsj dsi が dsj に等しい場合はTrue FullForm[ds] ds の完全形 Information[ds] ds についての情報 InputForm[ds] ds の入力形 Normal[ds] ds を通常の式に変換する - "LeastRecentlyUsedCache"が最大数のキーと値のペアを保存するとき,任意の新たな挿入によって,最近最も使われていないペアが強制削除される.
例題
すべて開く すべて閉じる例 (2)
新しい"LeastRecentlyUsedCache"は,CreateDataStructureを使って作成できる:
ds = CreateDataStructure["LeastRecentlyUsedCache", 3]ds["Length"]ds["Capacity"]ds["Insert", f[1] -> 1]ds["Length"]ds["KeyExistsQ", f[1]]ds["Lookup", f[1]]キーが見付からない場合には,Missingオブジェクトが返される:
ds["Lookup", f[2]]ds["Insert", f[2] -> 2];
ds["Insert", f[3] -> 3];
Normal[ds]ds["Lookup", f[1]];Normal[ds]ds["Insert", f[4] -> 4]式のバージョンは,キーと値のペアがキャッシュから強制削除されたことを示す:
Normal[ds]"LeastRecentlyUsedCache"の可視化は,どれが一番最後に使われたキーと値のペアであるかを示す:
ds = CreateDataStructure["LeastRecentlyUsedCache", 3];
ds["Insert", f[1] -> 1];
ds["Insert", f[2] -> 2];
ds["Insert", f[3] -> 3];
ds["Visualization"]スコープ (2)
情報 (1)
新しい"LeastRecentlyUsedCache"は,CreateDataStructureを使って作成することができる:
ds = CreateDataStructure["LeastRecentlyUsedCache", 3]Information[ds]エビクション (1)
evictions = 0;
evicted = {};
trackEvictions =
Function[{key, val},
evictions++;
AppendTo[evicted, key -> val]
];容量が2でエビクションを追跡する関数を含む新しい"LeastRecentlyUsedCache"を作成する:
ds = CreateDataStructure["LeastRecentlyUsedCache", 2, trackEvictions ]ds["Insert", 1 -> "one" ];
ds["Insert", 2 -> "two"];キャッシュが満杯になった.新しい要素が挿入されると,最長時間未使用の項目が削除される:
ds["Insert", 3 -> "three"]Normal[ds]evictionsevicted履歴
2020 で導入 (12.1)