[英]High performance string hashing function in Java/Scala
在Java / Scala中寻找高性能的字符串散列函数 - 比MurmurHash系列的函数更快,不需要加密强大,只能很好地分发。
有什么建议?
适合该法案的最快哈希算法似乎是xxHash 。 lz4-java项目包含一个移植到Java的实现 。 我不知道Java实现是否已经针对MurmurHash进行了基准测试; C ++中的性能优化并不总是移植到/来自Java。 (特别是,xxHash包含更多的数组访问,因此可能存在不可忽略的边界检查开销。)
编辑:它看起来像我使用JNI来调用xxHash的C ++实现,但JNI开销是不可忽略的,因此性能问题仍然存在。
但是,鉴于Scala 包含一个MurmurHash函数 ,并且Java包含一个更快的默认哈希值(大约2倍),有时可以合理地分布,人们确实想知道它是否真的有必要。 例如, scala.util.hashing.MurmurHash3
与从字节数组创建字符串的速度一样快,如果给它一个字节数组,速度是它的两倍。
你可以找到非常快速的Java哈希函数实现,BTW帐户内部的String实现( char[]
数组)以最大化速度,这里: https : //github.com/OpenHFT/Zero-Allocation-Hashing
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.