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