1

私がいくつかの機能を持っているとしましょうFunc<int,int,int>。次に、関数の結果をキャッシュ(およびすばやくルックアップ)したいと思います。

要件:

  1. 固定キャッシュサイズ(たとえば、1000トリプル(入力、入力、結果))。
  2. キャッシュ内の高速ルックアップと高速ストレージ。
  3. キャッシュがいっぱいの場合は、最も長い間アクセス(ルックアップ)されていないエントリを削除する必要があります。

どのようなデータ構造を使用する必要がありますか?

4

1 に答える 1

1

.NET Cacheを使用するか、非 Web 固有のキャッシュであるMemoryCacheを使用します。

CacheMemoryLimitプロパティを使用して、キャッシュで使用できるメモリの量を指定できます。

キャッシュがいっぱいになったら、必要な割合のエントリをトリムできます。エントリは必要に応じて削除されます。

... エントリは、要求されたトリム パーセンテージに達するまで、LRU (least-recently used) アルゴリズムに基づいてキャッシュから削除されます

キャッシュ内の各アイテムのキーは文字列である必要があるため、入力を次のようにフォーマットします{0}-{1}。要件を満たすためにいくつかのパフォーマンス テストを実行することをお勧めしますが、これは他のソリューションと同じくらい高速であると確信しています。

于 2013-01-11T04:09:05.600 に答える