C 中的unordered_map/set的哈希功能更快吗?
Are there faster hash functions for unordered_map/set in C++?
默认函数来自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很快。
您需要从什么意义上解释'更好的'?最快的哈希功能将仅使用该值,但这是没有用的。一个更具体的答案将取决于您的内存约束以及您愿意接受的碰撞概率。
还要注意,内置的哈希功能是针对不同类型的构建不同的,结果,我希望int
和string
的哈希函数已经通过在一般意义上优化时间复杂性和碰撞概率来进行优化。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 使用Qt C++计算类似Git的SHA1哈希
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 用C++将哈希表写入文件并从文件中恢复
- c++找不到具有相同哈希的无序集合元素
- 哈希文件递归并保存到矢量Cryptopp中
- 对 pair<pair<int,int>pair<int,int unordered_map进行哈希处理>>
- 直接在 unordered_map 的方法中使用哈希,而不是生成哈希的用户定义对象
- 如何为字符串生成唯一但一致的 N 位哈希(小于 64 位)?
- 疯狂(乘,添加,划分)哈希功能如何起作用
- C 中的unordered_map/set的哈希功能更快吗?
- 哈希表打印和插入功能
- Win32中的任何易于使用的哈希功能都可以放置ASCII字符串
- 对于一对碰撞机会较低的INT的最小哈希功能是什么
- 声明具有免费功能的Unordered_set,以用于用户定义的哈希和比较
- C++哈希表插入功能
- 哈希表添加和打印功能问题
- 哈希表实现大小调整功能
- 哈希表搜索功能在某些情况下不起作用