CityHash 与 MurmurHash 哈希算法

发布时间:2022-06-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了CityHash 与 MurmurHash 哈希算法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

MurMurHash     MurMurHash由Austin Appleby在2008年发明,与其它流行的哈希函数相比,对于规律性较强的key,MurMurHash的随机分布特征表现更良好,Redis,Memcached,Cassandra,HBase,Lucene中都使用到了这种hash算法。另外,Guava工具包提供了MurMurHash算法实现,Guava中的BloomFilter实现也用到了MurMurHash算法,Redis的java客户端Jedis中也使用到了此算法。MurmurHash是一种经过广泛测试且速度很快的非加密哈希函数。存在多种变体,名字来自两个基本运算,即multiply和rotate(尽管该算法实际上使用shift和xor而不是rotate)。    MurmurHash3可以产生32位或128位哈希,旧版本MurmurHash2产生32位或64位值,MurmurHash2A变体添加了Merkel-Damgard构造,以便可以逐步调用它。MurmurHash64A针对64位处理器进行了优化,针对32位处理器进行MurmurHash64B优化。MurmurHash2-160生成160位哈希,而MurmurHash1已过时,实现规范的实现是用C++实现的,但是有多种流行语言的有效移植,已被很多开源项目采用。    具有良好的分布性,适用于机器学习用例,例如特征哈希和随机投影,布隆过滤器中也有应用。MurMurHash3 128 位版本的速度是 MD5 的十倍。MurMurHash3 生成 32 位哈希的用时比生成 128 位哈希的用时要长。原因在于生成 128 位哈希的实现受益于现代处理器的特性。32 位哈希值发生碰撞的可能性就比 128 位的要高得多,当数据量达到十万时,就很有可能发生碰撞。    MurmurHash3可以产生32位或128位哈希,旧版本MurmurHash2产生32位或64位值,MurmurHash2A变体添加了Merkel-Damgard构造,以便可以逐步调用它。MurmurHash64A针对64位处理器进行了优化,针对32位处理器进行MurmurHash64B优化。MurmurHash2-160生成160位哈希,而MurmurHash1已过时,实现规范的实现是用C++实现的,但是有多种流行语言的有效移植,已被很多开源项目采用。    具有良好的分布性,适用于机器学习用例,例如特征哈希和随机投影,布隆过滤器中也有应用。MurMurHash3 128 位版本的速度是 MD5 的十倍。MurMurHash3 生成 32 位哈希的用时比生成 128 位哈希的用时要长。原因在于生成 128 位哈希的实现受益于现代处理器的特性。32 位哈希值发生碰撞的可能性就比 128 位的要高得多,当数据量达到十万时,就很有可能发生碰撞。CityHash    CityHash算法由Google公司于2013年公布,有两种算法:CityHash64 与 CityHash128。它们分别根据字串计算64和128位的散列值。这些算法不适用于加密,但适合用在散列表等处。    Google一直在根据其数据中心常用的CPU对算法进行优化,结果发现对大多数个人计算机与笔记本同样有效益。尤其是在64位寄存器、指令集级的并行,以及快速非对其内存存取方面。    该算法的开发受到了前人在散列算法方面的巨大启发,尤其是Austin Appleby的MurmurHash。但CityHash的主要优点是大部分步骤包含了至少两步独立的数学运算。现代CPU通常能从这种代码获得最佳性能。但CityHash也有其缺点:代码较同类流行算法复杂。Google希望为速度而不是为了简单而优化,因此没有照顾较短输入的特例。总体而言,CityHash64与CityHash128是解决经典问题的全新算法。在实际应用中,Google预计CityHash64在速度方面至少能提高 30%,并有望提高多达两倍。此外,这些算法的统计特性也很完备。MurmurHash3 VS CityHash     CityHash是Google发布的字符串散列算法,和murmurhash一样,属于非加密型hash算法。CityHash算法的开发是受到MurmurHash的启发。优点是大部分步骤包含了至少两步独立的数学运算。缺点是代码较同类流行算法复杂。 Google 希望为速度而不是为了简单而优化,因此没有照顾较短输入的特例 。

 

脚本宝典总结

以上是脚本宝典为你收集整理的CityHash 与 MurmurHash 哈希算法全部内容,希望文章能够帮你解决CityHash 与 MurmurHash 哈希算法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: