默认函数来自std :: hash。我想知道是否有更好的哈希函数来节省计算时间?对于整数键和字符串键。
我尝试使用Google的City Hash来获取整数和字符串键,但它的性能比std :: hash差一点。
答案 0 :(得分:6)
std :: hash函数已经具有良好的性能。我认为你应该尝试开源哈希函数。
查看https://github.com/Cyan4973/xxHash。我引用它的描述:" xxHash是一种极速的哈希算法,以RAM速度限制运行。它成功完成了SMHasher测试套件,该套件评估散列函数的冲突,色散和随机性质。代码是高度可移植的,并且所有平台上的哈希都是相同的(小/大端)。"
此网站上另一个问题的帖子:Fast Cross-Platform C/C++ Hashing Library。众所周知,FNV,Jenkins和MurmurHash很快。
答案 1 :(得分:2)
您需要更好地解释'凭什么?最快的哈希函数只是使用该值,但这是无用的。更具体的答案取决于你的记忆限制以及你愿意接受的碰撞概率。
另请注意,内置哈希函数针对不同类型的构建方式不同,因此,我希望int
和string
的哈希函数已经在一般意义上针对时间复杂度进行了优化和碰撞概率。