社区
数据结构与算法
帖子详情
murmurhash为什么那么快,冲突那么少
Pory
2017-01-05 08:33:49
最近在用murmur哈希,有个疑问,他的算法不复杂,但为什么效果那么好,冲突少,速度快,而且算法里有几个常数,设置的很巧妙,但不明白为什么?求高人指点
...全文
1276
1
打赏
收藏
murmurhash为什么那么快,冲突那么少
最近在用murmur哈希,有个疑问,他的算法不复杂,但为什么效果那么好,冲突少,速度快,而且算法里有几个常数,设置的很巧妙,但不明白为什么?求高人指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
打败猫的老鼠
2018-07-27
打赏
举报
回复
你确定是冲突少么?为什么我试验用jdk的hash算法,比他冲突更少,是我代码的原因吗?public class Test {
public static void main(String[] args) {
HashFunction hf = Hashing.murmur3_32();
Integer testSize = 20000000;
Set<Integer> set = Sets.newHashSetWithExpectedSize(testSize);
int containsSize = 0;
for(int i = 0; i < testSize; i++) {
int tmp = hf.newHasher().putString(String.valueOf(i), Charsets.UTF_8).hash().asInt();
if(set.contains(tmp)) {
containsSize++;
} else {
set.add(tmp);
}
}
System.out.println("murmurhash containsSize=" + containsSize);
System.out.println("murmurhash dup_ratio =" + containsSize / (1.0 * testSize));
System.out.println("#####################################");
Set<Integer> set2 = Sets.newHashSetWithExpectedSize(testSize);
int containsSize2 = 0;
for(int i = 0; i < testSize; i++) {
int tmp2 = String.valueOf(i).hashCode();
if(set2.contains(tmp2)) {
containsSize2++;
} else {
set2.add(tmp2);
}
}
System.out.println("JDK hash containsSize=" + containsSize2);
System.out.println("JDK hash dup_ratio =" + containsSize2 / (1.0 * testSize));
}
}
结果:
murmurhash containsSize=46704
murmurhash dup_ratio =0.0023352
#####################################
JDK hash containsSize=8288
JDK hash dup_ratio =4.144E-4
高运算性能,低碰撞率的
hash
算法
Murmur
Hash
算法.zip
Murmur
Hash
算法由Austin Appleby创建于2008年,现已应用到Hadoop、libstdc 、nginx、libmemcached,Redis,Memcached,Cassandra,HBase,Lucene等开源系统。2011年Appleby被Google雇佣,随后Google推出其变种的City
Hash
算法。 官方网站:https://github.com/aappleby/sm
hash
er
Murmur
Hash
算法,自称超级
快
的
hash
算法,是FNV的4-5倍。官方数据如下: OneAtATime – 354.163715 mb/sec FNV – 443.668038 mb/sec SuperFast
Hash
– 985.335173 mb/sec lookup3 – 988.080652 mb/sec
Murmur
Hash
1.0 – 1363.293480 mb/sec
Murmur
Hash
2.0 – 2056.885653 mb/sec 但也有文章声称,只有当key的长度大于10字节的时候,
Murmur
Hash
的运算速度才
快
于DJB。“从计算速度上来看,
Murmur
Hash
只适用于已知长度的、长度比较长的字符”wiki地址:https://en.wikipedia.org/wiki/
Murmur
Hash
标签:
hash
高效的
Murmur
Hash
算法实现
Murmur
Hash
是一种高性能的哈希算法,由 Austin Appleby 在 2008 年创建。它是一种非加密哈希算法,可以
快
速地计算出任意数据的哈希值。
Murmur
Hash
算法的特点是
快
速、高效、低碰撞、低
冲突
,适用于各种哈希表、哈希集合、哈希映射等数据结构。它的哈希值分布均匀,哈希
冲突
率低,能够更好地处理哈希碰撞和哈希
冲突
。
Murmur
Hash
算法的原理是将输入数据分成若干个块,每个块都使用不同的哈希函数计算出一个哈希值,然后将这些哈希值进行混合和运算,得到最终的哈希值。
哈希
Murmur
Hash
算法详解
文章目录一、哈希函数定义特点应用常见哈希算法二、
murmur
hash
定义特点应用介绍三、
Murmur
Hash
使用四、性能测试
Murmur
Hash
:(multiply and rotate) and (multiply and rotate)
Hash
,乘法和旋转的
hash
算法。 一、哈希函数 定义 散列函数(英语:
Hash
function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合
murmur
hash
murmur
hash
是一个高性能,低
冲突
率的
hash
算法,由Austin Appleby 2008 年第一次发布 一下是他关于算法一些参数发现的discussion Discussion (Note, this was written for
Murmur
Hash
1.0 and is only loosely applicable to 2.0) I
暴雪
hash
murmur
hash
3 city
hash
性能对比
前些天要写一个小功能,想到了之前看到的暴雪
hash
,同事推荐
murmur
hash
,于是写了点简单的代码测试了一下。后来在网上又找到了city
hash
,于是加了进去测了一下。 结论:暴雪
hash
算法
murmur
hash
64A算法 city
hash
算法中,性能最高的是city
hash
算法 city
hash
网址:https://github.com/google/city
hash
linux可
数据结构与算法
33,010
社区成员
35,327
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章