我正在一个被调用数亿次的函数上实现缓存。缓存大小为数千万项。它目前是使用 实现的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);
如果有其他数据结构允许这样做,我也很高兴听到它。
提前致谢!