Performance 为(字符串)哈希函数选择乘数

Performance 为(字符串)哈希函数选择乘数,performance,algorithm,Performance,Algorithm,关于选择(乘法)散列函数中使用的乘法器,您有什么建议/规则吗。该函数正在计算字符串的散列值。从历史上看,33似乎是一个流行的选择,而且它往往工作得很好。但没人知道为什么。要了解更多详细信息,请使用与您的集合大小相对应的东西。这样,当你循环时,你就不会得到与你刚才尝试的相同的数字。最近我和一位同事就哈希函数进行了一次有趣的讨论。我们的结论如下: 如果您真的需要编写一个好的哈希函数,它比标准语言中的默认实现更能减少冲突,那么您需要一个数学高级学位 如果你正在编写一个自定义哈希函数可以显著提高应用程序

关于选择(乘法)散列函数中使用的乘法器,您有什么建议/规则吗。该函数正在计算字符串的散列值。

从历史上看,33似乎是一个流行的选择,而且它往往工作得很好。但没人知道为什么。要了解更多详细信息,请使用与您的集合大小相对应的东西。这样,当你循环时,你就不会得到与你刚才尝试的相同的数字。

最近我和一位同事就哈希函数进行了一次有趣的讨论。我们的结论如下:

如果您真的需要编写一个好的哈希函数,它比标准语言中的默认实现更能减少冲突,那么您需要一个数学高级学位

如果你正在编写一个自定义哈希函数可以显著提高应用程序性能的应用程序,那么你就是谷歌,你有很多数学博士要做这项工作


很抱歉没有直接回答您的问题,但底线是,实际上没有必要为字符串编写自己的哈希函数。你用什么语言工作?我认为有一种简单的方法可以计算“足够好”的散列代码。

下页提供了几种通用散列函数的实现,这些函数效率高且冲突最小: