【问题标题】:Millions of searches in unordered_map, runtime hogger在 unordered_map 中进行数百万次搜索,运行时占用者
【发布时间】:2019-05-09 20:40:27
【问题描述】:

我有大约 5000 个大小的字符串(长度主要在 50-80 之间)。目前我创建了一个无序的地图并按下这些键并在执行期间我访问(使用地图' s find 函数)它们10-1亿次。我围绕这个搜索做了一些分析,似乎是运行时的狂热者。 我搜索了其他更好更快的搜索选项,但不知何故没有找到任何实质性的东西。 有没有人知道如何让它更快,也可以打开定制容器。我确实尝试过std::map,但没有帮助。如果有人有,请分享链接。

还有一点要补充,我也在运行时修改了一些键的值,但不是很多次。主要是搜索。

【问题讨论】:

标签: c++11 stl unordered-map stdmap


【解决方案1】:

考虑到与您的C++ ~ 1M look-ups in unordered_map with string key works much slower than .NET code 类似的问题,我猜您遇到了由std::unordered_map 使用的哈希函数引起的问题。对于长度为 50-80 的字符串,可能会导致大量冲突,这会显着降低查找性能。

我建议您为std::unordered_map 使用一些自定义哈希函数。或者你可以试试A fast, memory efficient hash map for C++

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2020-05-17
    • 2014-09-19
    相关资源
    最近更新 更多