我需要理想的(无冲突)哈希函数来将int映射到相同大小的int。最简单的方法是交换一些位的位置,但是也许有一些操作次数少且哈希种子容易更改的快速实现?也许使用一些快速对称密码?x86有AES
说明。我不需要可移植性,所以使用SSE
加速指令或其他x86特定指令会很棒吗?因为哈希应该非常快。
使用类似FNV32-1A的简单哈希,您可能会获得更好的结果。
复杂的指令一样crc32
,clmul
,aes
,等...有更高的吞吐量,但它们也有较高的延迟。就它们自己而言,它们也不一定能为您提供更好的分发。
您应该考虑的另一件事是冲突与哈希函数的成本。线性探针通常应在合理数量的探针上表现良好,因为16个值将适合单个高速缓存行。通过预测缓存访问,CPU可能也可以隐藏访问成本。
还需要考虑的是占用率和桌子尺寸之间的权衡。有时,将表大小增加一倍会更有效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句