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