我遇到的情况是我通过连接数字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);
答案 0 :(得分:4)
尝试以字典中的键为特定方式构建字符串以提高性能是1000%的过早优化,并且无济于事。
C#Dictionaries使用GetHashCode构建内部结构。 GetHashCode的结果是特定于平台的,特定于编码的,并且应该从不假设具有一定的微优化分布。
https://msdn.microsoft.com/en-us/library/system.string.gethashcode(v=vs.110).aspx
通过测量进行优化。不是在黑暗中试图弄乱已有算法的内部方法。最重要的是,当你发现某些事情很慢时进行优化。不是之前。