Hasty Briefsbeta

双语

Techniques to beat Arrays.hashCode(byte[]) using Java's own means

10 months ago
  • #Hashing
  • #Java
  • #Optimization
  • Java的Arrays.hashCode(byte[])方法为字节数组计算32位哈希值
  • OpenJDK 20及之前版本的默认实现采用简单循环,未进行高度优化
  • 循环展开和向量化技术(SWAR和SIMD)可显著加速哈希计算
  • 基于SWAR的实现通过64位长整型位操作,每次处理8个字节
  • 基于SIMD的实现利用Java向量API并行处理多个字节,性能超越内部实现
  • 基准测试显示:SWAR比默认实现快2.9倍,SIMD优于OpenJDK内部实现
  • 两种方法对非整倍数字节数组都会单独处理剩余字节
  • 研究表明这些技术可有效改进OpenJDK当前实现