我正在寻找一种具有良好(即接近均匀)分布的高速散列函数,用于散列表实现。
哈希表将专门用于存储具有整数键的值。
我可以只使用整数的低几位作为哈希吗?
例如 int key = n & 15; 并创建一个包含 16 个插槽的数组来存储它们。
有什么建议吗?
你可以在这里看到xxhash
您提到的哈希函数非常快,但也非常糟糕。如果你想要一个“愚蠢”的散列函数,也许你可以考虑模数。
例子:
int key = item % size_of_hash_table
好吧,昨晚我做了一个通用的哈希测试(用 C 语言),它涵盖了几个顶级哈希器和 38 个不同的键。
欢迎大家对其进行基准测试: http ://www.overclock.net/t/1319572/benchmarking-the-fastest-hash-function/0_20#post_18495990
我很高兴在您的帮助下揭示Intel与AMD以及Intel 12.1编译器与Microsoft 16 (VS2010) 编译器组合的行为方式。