数以百万计的搜索在unordered_map中运行时

时间:2018-12-08 07:15:14

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

我大约有5000个字符串大小(长度通常在50-80之间)。目前,我创建了无序地图并按了这些键,在执行过程中,我访问了(使用地图 的查找功能),它们有10到1亿次我对此搜索进行了一些分析,似乎是运行时的绊脚石。 我搜索了其他更好,更快的搜索选项,但是以某种方式没有发现任何实质性内容。 有谁知道如何使它更快,也可以为定制容器打开。我确实尝试过std::map,但没有帮助。如果有人有,请共享链接。

还需要添加一点,我也可以在运行时针对某些键修改值,但是次数不多。主要是搜索。

1 个答案:

答案 0 :(得分:0)

考虑了与您的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++