C 中的unordered_map/set的哈希功能更快吗?

Are there faster hash functions for unordered_map/set in C++?

本文关键字:功能 哈希 set unordered 中的 map      更新时间:2023-10-16

默认函数来自std :: hash。我想知道是否有更好的哈希功能来节省计算时间?用于整数键以及字符串键。

我尝试了Google的City Hash用于整数和字符串键,但其性能比STD :: Hash。

差一些。

std ::哈希功能的性能已经很好。我认为您应该尝试开源哈希功能。

查看此内容https://github.com/cyan4973/xxhash。我从其描述中引用:" xxhash是一种非常快速的哈希算法,在RAM速度限制下运行。它成功地完成了Smhasher测试套件,该套件评估了哈希功能的碰撞,分散和随机性的质量。代码非常便携,并且在Hashhes上相同,在Hashhes上是相同的。所有平台(Little/Big Endian)。"

此外,此线程也来自此站点上的另一个问题:快速跨平台C/C 哈希库。FNV,Jenkins和Murmurhash很快。

您需要从什么意义上解释'更好的'?最快的哈希功能将仅使用该值,但这是没有用的。一个更具体的答案将取决于您的内存约束以及您愿意接受的碰撞概率。

还要注意,内置的哈希功能是针对不同类型的构建不同的,结果,我希望intstring的哈希函数已经通过在一般意义上优化时间复杂性和碰撞概率来进行优化。