MurmurHash.net
1.0.0
Murmur Hash 2 的 C# 實現
用法:
MurmurHash2.Hash("mystring");
MurmurHash2.Hash(byteArray);
我寫了一個小基準來測試 466k 單字的碰撞次數(所有英文單字的清單取自這裡:https://github.com/dwyl/english-words),碰撞次數為 22 ,我認為這是相當不錯的結果。
標準string.GetHashCode()
在 466k 單字列表上給出48 次衝突。
已用時間(在 466k 單字清單中):
哈希值 | 經過時間 | 碰撞次數 |
---|---|---|
雜音哈希2 | 104 毫秒 | 22 |
獲取哈希碼 | 47 毫秒 | 48 |
對於從1
到999999
數字(想想郵遞區號),結果是:
哈希值 | 經過時間 | 碰撞次數 |
---|---|---|
雜音哈希2 | 234 毫秒 | 56 |
獲取哈希碼 | 121 毫秒 | 0 |
GetHashCode
在處理碰撞方面效果更好,但 MurMur 更擅長處理較長的文字。