何億回も呼び出される関数にキャッシュを実装しています。キャッシュサイズは数千万アイテムです。現在Dictionary
、を使用して実装されており、その中のルックアップにはかなりの時間がかかります。
値だけでなく、のペア全体への参照を取得することは可能Dictionary
ですか?そのため、値が存在するかどうかを確認し、単一のルックアップを使用して存在する場合はそれを確認します(場合によっては更新します)。
現在、私はこのようなものを持っています:
int val;
if (cache.TryGetValue(key, out val))
if (val < newVal) cache[key] = newVal;
else return val;
else
cache.Add(key, newVal);
私はこれを手に入れたいです:
Pair pair = cache.GetPair(key);
if (pair != null)
if (pair.Value < newVal) pair.Value = newVal;
else return pair.Value;
else
cache.Add(key, newVal);
これを可能にする代替のデータ構造があれば、私もそれについて聞いてうれしいです。
前もって感謝します!