Dot-Net

字典的關鍵性能

  • April 21, 2011

一個string鍵比一個鍵快intDictionary<,>

不。首先,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));
}

引用自:https://stackoverflow.com/questions/5743474