c#字典键开头的数值是否可以提高查找性能?

时间:2016-08-26 19:44:16

标签: c# dictionary collections

我遇到的情况是我通过连接数字ID号和创建唯一值的字符串值来创建密钥。

它对字典的工作方式或散列表密度有影响吗?如果数字是第一个或者字符串是第一个字符串本身是字符串,是否有任何性能影响?

例如:

Dictionary<string, bool> dict = new Dictionary<string, bool>();
dict.Add(integerValue + "-" + stringValue, true);

OR

Dictionary<string, bool> dict = new Dictionary<string, bool>();
dict.Add(stringValue + "-" + integerValue, true);

1 个答案:

答案 0 :(得分:4)

尝试以字典中的键为特定方式构建字符串以提高性能是1000%的过早优化,并且无济于事。

C#Dictionaries使用GetHashCode构建内部结构。 GetHashCode的结果是特定于平台的,特定于编码的,并且应该从不假设具有一定的微优化分布。

https://msdn.microsoft.com/en-us/library/system.string.gethashcode(v=vs.110).aspx

通过测量进行优化。不是在黑暗中试图弄乱已有算法的内部方法。最重要的是,当你发现某些事情很慢时进行优化。不是之前。