xxHash极快的哈希算法

联合创作 · 2023-09-28

xxHash 是一种极快的哈希算法,在 RAM 速度限制下运行。它成功完成了 SMHasher 测试套件,该套件评估了哈希函数的碰撞、分散和随机性质量。代码具有高度的可移植性,所有平台上的哈希值都相同(little / big endian)。

它有四种版本(XXH32、XXH64、XXH3_64bits和XXH3_128bits)。最新的变体,XXH3,提供了全面的性能改进,特别是在小数据上。

参考系统使用英特尔 i7-9700K cpu,并运行 Ubuntu x64 20.04。开源基准测试程序是用 clang v10.0编 译的,使用- O3flag。

Hash Name Width Bandwidth (GB/s) Small Data Velocity Quality Comment
XXH3 (SSE2) 64 31.5 GB/s 133.1 10  
XXH128 (SSE2) 128 29.6 GB/s 118.1 10  
RAM sequential read N/A 28.0 GB/s N/A N/A for reference
City64 64 22.0 GB/s 76.6 10  
T1ha2 64 22.0 GB/s 99.0 9 Slightly worse collisions
City128 128 21.7 GB/s 57.7 10  
XXH64 64 19.4 GB/s 71.0 10  
SpookyHash 64 19.3 GB/s 53.2 10  
Mum 64 18.0 GB/s 67.0 9 Slightly worse collisions
XXH32 32 9.7 GB/s 71.9 10  
City32 32 9.1 GB/s 66.0 10  
Murmur3 32 3.9 GB/s 56.1 10  
SipHash 64 3.0 GB/s 43.2 10  
FNV64 64 1.2 GB/s 62.7 5 Poor avalanche properties
Blake2 256 1.1 GB/s 5.1 10 Cryptographic
SHA1 160 0.8 GB/s 5.6 10 Cryptographic but broken
MD5 128 0.6 GB/s 7.8 10 Cryptographic but broken

XXH3 专为在长输入和小输入上都具有出色的性能而设计,如下图所示:

xxHash已经用Austin Appleby的优秀的SMHasher测试套件进行了测试,并通过了所有测试,确保了合理的质量水平。它还通过了SMHasher较新分叉的扩展测试,具有额外的场景和条件。

最后,xxHash提供了自己的大规模碰撞测试器,能够生成并比较数十亿的哈希值,以测试64位哈希算法的极限。在这方面,xxHash也具有良好的结果,与生日悖论一致。更详细的分析记录在 wiki 中

浏览 5
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报