我不能使用 boost:hash 因为我必须坚持使用 C 而不能使用 C++。
但是,我需要对大量(10K 到 100k)令牌字符串(5 到 40 字节长度)进行哈希处理,以便在这些字符串中进行搜索速度最快。
MD5、SHA1 或任何长哈希函数对于简单任务来说似乎太繁重,我不做密码学。另外还有存储和计算成本。
因此我的问题是:
什么可能是最简单的哈希算法,可以确保在大多数实际情况下防止冲突。
哈希值使用多少位?我正在为 32 位系统进行开发。 Perl/Python 中的哈希算法也使用 32 位哈希吗?还是我必须跳到64?
关于常见脚本语言中哈希表的实现:实现是否检查冲突,或者我可以完全避免该部分吗?
您可以在以下位置找到一个好的(且快速的)哈希函数以及有趣的读物: http://www.azillionmonkeys.com/qed/hash.htmlhttp://www.azillionmonkeys.com/qed/hash.html http://www.azillionmonkeys.com/qed/hash.html
唯一不应该检查冲突的情况是,如果您使用完美哈希——一个很好的老式查找表,例如gperf http://www.gnu.org/software/gperf/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)