【发布时间】:2019-06-30 14:26:50
【问题描述】:
我想以指针为键映射数据。我应该选择什么容器,map 还是 unordered_map?这个主题有多个关于 stackoverflow 的问题,但没有一个涉及我们需要迭代所有键值对时的性能方面。
std::map<classKey* , classData*> myMap;
std::unordered_map<classKey* , classData*> myUnorderedMap;
for (auto & iter : myMap) { //loop1
display(iter.second);
}
for (auto & iter : myUnorderedMap) { //loop2
display(iter.second);
}
loop1 vs loop2 哪一个提供更好的性能。 Bench Mark由@RetiredNinja提供
对于 size = 10,000,000 我们得到以下基准测试结果:
【问题讨论】:
-
有趣。关了我不知道。不过,我会把钱放在
std::map上。你能设置一些用于分析的测试用例吗? -
请展示您如何对此进行基准测试。
-
@MichaelChourdakis 再次,OP 询问的是性能,而不是时间复杂度方面的效率。
-
不确定我是否正确使用了这个快速基准测试工具,但玩起来很有趣。 quick-bench.com/sxQWkAg6tXRWsUCXIArv4NbjZ3E
-
Quick Bench 非常出色; have used it to great effect(如果我自己这么说的话)