Dot-Net
字典的關鍵性能
一個
string鍵比一個鍵快int嗎Dictionary<,>?
不。首先,
Dictionary[更新]使用密鑰的雜湊碼在其內部儲存中找到它們 - 而不是密鑰。雜湊碼是一個int. 對於int,它只是 的值int,因為string它必須被生成。所以使用起來
int會稍微快一些。事實上,為字元串生成雜湊碼是一個非常複雜的過程(使用反射器的片段)[希望這不會被視為侵犯版權,因為它不是]:
fixed (char* str = ((char*) this)) { char* chPtr = str; int num = 0x15051505; int num2 = num; int* numPtr = (int*) chPtr; for (int i = this.Length; i > 0; i -= 4) { num = (((num << 5) + num) + (num >> 0x1b)) ^ numPtr[0]; if (i <= 2) { break; } num2 = (((num2 << 5) + num2) + (num2 >> 0x1b)) ^ numPtr[1]; numPtr += 2; } return (num + (num2 * 0x5d588b65)); }