【发布时间】:2016-02-22 06:50:25
【问题描述】:
我需要理想的(无冲突)哈希函数将 int 映射到相同大小的 int。最简单的方法是交换一些位的位置,但也许有一些很好的快速实现,操作数少,哈希种子容易改变?
也许使用一些快速对称密码? x86 有AES 指令。我不需要可移植性,所以使用 SSE 或其他 x86 特定加速指令的东西会很棒吗?因为散列应该非常快。
【问题讨论】:
-
为什么要将
int映射到int,这根本没有任何意义。是因为数组有间隙吗?也许还有其他基于算术的解决方案! -
是的 - 你能解释一下你需要这个散列函数吗?否则,标识函数(只是将“x”映射到“x”)听起来符合您的要求 - 它将整数映射到相同大小的整数,没有冲突,而且非常非常快:)
-
@psmears 你又错过了一个非常。
-
@iharob: 是的,但前提是你真的很好地优化它;-)
-
一个简单的非聚类是
% table size并确保table_size是一个素数。这不会损害一个好的哈希。它通常有助于一个糟糕的哈希。 YMMV。
标签: c optimization hash