【发布时间】:2017-04-09 04:16:20
【问题描述】:
在这里你可以看到代码,运行它,看看时间。
http://rextester.com/MNQZS47293
我在我的机器上得到了类似的结果(使用相同版本的 MSVC),在向量中的查找比在 std::set 中慢。
我希望排序后的向量版本更快,因为数据的局部性更好(缓存更友好)。 在最坏的情况下,我希望它们相似,因为它们都执行二进制搜索,但我不明白为什么 std::set 比排序向量版本快得多。
非常感谢
编辑:对不起,我粘贴了错误的链接(我修改了代码但忘记复制链接)旧代码使用的是 unordered_set,此代码使用的是集合,问题仍然存在:为什么是二进制搜索排序向量比搜索集合慢?我注意到如果元素的数量足够大,那么排序向量会更快,但我仍然无法理解为什么集合可以在任意数量的元素上优于排序向量。
【问题讨论】:
-
请在此处发布代码,仅提供链接与 SO 无关
-
您已经编辑了问题,所以之前的正确答案无效。
标签: c++ performance c++11 vector set