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 更擅长处理较长的文本。