何億回も呼び出される関数にキャッシュを実装しています。キャッシュサイズは数千万アイテムです。現在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);
これを可能にする代替のデータ構造があれば、私もそれについて聞いてうれしいです。
前もって感謝します!