2016-08-26 37 views
-3

我遇到了一種情況,即通過連接數字ID號和創建唯一值的字符串值創建密鑰。c#字典鍵開頭的數字值是否可以提高查找性能?

它在字典工作方式或哈希表密度方面有所不同,或者如果數字是第一個字符串或字符串是第一個鍵本身是字符串,是否會影響性能?

例如:

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); 
+6

如果您想知道更改是否會使您的程序更快,請進行更改,**運行**,然後您就會知道。 –

+0

是的,我試過了,我找不到一個可以忽略的區別,我正在尋找更深入的瞭解任何潛在的差異,因爲c#的內部沒有如何改善它。 –

+0

我會想象它沒有任何區別,因爲它仍然會導致基本相同的哈希計算,所以沒有真正的性能改進,但我沒有真正的線索 - 因此將它僅作爲註釋使用。 –

回答

4

極力打造的字符串以某種方式爲按鍵的字典,以提高性能爲1000%過早的優化,而不會幫助。

C#字典使用GetHashCode構建內部結構。 GetHashCode的結果是平臺特定的,編碼特定的,並且應該假定它們具有一定的分佈以進行微優化。

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

通過測量優化。不要在黑暗中刺探有關如何混淆已有算法內部的方法。而最重要的是,當你注意到某些東西很慢時優化。之前沒有。

+0

感謝這是一個有用的答案 –

相關問題