EfficientHashing 将 Vec3i(及其子类如 BlockPos)的哈希算法替换为一种碰撞抵抗能力显著更强的算法,从而在几乎所有使用其哈希码的场景中带来性能提升。
我们可以通过一个简单的测试来证明这一点。测试方法是对 new BlockPos(-100, -20, -100) 到 new BlockPos(100, 50, 100)(包含两端)之间的所有 BlockPos 组合进行哈希计算,总对象数量超过 2,800,000 个。
原版算法总共产生了 194,571 个唯一的哈希码。这意味着至少有 93% 的 BlockPos 哈希码彼此发生了碰撞。
而 EfficientHashing 使用的 PhiMix 算法总共产生了 2,868,471 个唯一的哈希码。这意味着每个唯一的 BlockPos 对象都获得了其独有的哈希码,并且所有 BlockPos 哈希码中没有发生任何碰撞。
| 唯一哈希码数量 | 碰撞次数 | 碰撞率 | |
|---|---|---|---|
| 原版算法 | 194,571 | 2,673,900 | 93.2% |
| EfficientHashing | 2,868,471 | 0 | 0% |
如果您对实际的测试代码感兴趣,请参阅:此处
基准测试结果:
Benchmark Mode Cnt Score Error Units
VecHashingBenchmark.mixin thrpt 5 47.012 ± 1.029 ops/s
VecHashingBenchmark.vanilla thrpt 5 49.326 ± 1.507 ops/s
PhiMix 的性能约为原版哈希算法的 95.3%。是的,它确实稍慢一些,但与其他哈希解决方案相比,这种性能差距相对微小,并且可以通过哈希碰撞抵抗能力的显著提升轻松弥补。
如果您对实际的基准测试代码感兴趣,请参阅:此处
在原版哈希算法中,如果您对 BlockPos/Vec3i 的“默认”实例(即 new BlockPos(0, 0, 0))进行哈希计算,生成的哈希码将是 0,这恰好是整数的“默认”值。PhiMix 也保留了这一特殊行为,提供了最佳的与原版兼容性。
友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作
历史访问人数:89,686 | 历史访问人次:179,562
今日访问人数:420 | 今日访问人次:434
昨日访问人数:19,978 | 昨日访问人次:22,291
Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.
❤ Powered by GermMC 京ICP备17023959号-6