【发布时间】:2013-09-05 12:42:27
【问题描述】:
我有很多词典实例,这些词典的内容经常变化,大约有 100 个左右的条目(有时少得多)。 我需要经常查询这本词典。 我还不太确定,但我认为我的字典查找越来越昂贵,并且对我的表现产生了不利影响(这是一个关键问题)。
我可以缓存我的字符串键的哈希码
int hc = MyStrKey.GetHasCode();
然后直接通过哈希码在字典中查找相应的值(如果可以的话)? 如果有可能,是否不推荐,是否值得加速?
通过频繁更改内容,我的意思是随着时间的推移,我正在从字典中添加和删除条目。
是否可以另一种做法是使用 int 键,我将实际字符串键的关联缓存到唯一(特定字典)int 键并改用字典?
我是否可能在这里吠错了树?
【问题讨论】:
-
Am I potentially barking up the wrong tree here?这取决于您的查询的样子。请编辑您的帖子以显示查询。 -
我不认为字典访问时间会以一种明显的方式逐渐变差,否则在相同的状态下。我敢打赌还有其他问题。
-
如果您想经常查询该字典,请编写您自己的哈希表。我试了一下,速度提高了个位数。
-
@usr 我很想看看你是如何实现的
-
@Mishax 基本上你失去了很多抽象。您需要公开私有成员,更改调用者以使用不同的使用模式并使用二次幂表大小来消除慢模运算符。这些都不是透明的,它需要对字典和调用者进行极端的更改。
标签: c# dictionary