gpt4 book ai didi

c++ - 性能 - 使用迭代器或指针迭代 vector ?

转载 作者:太空狗 更新时间:2023-10-29 20:14:47 24 4
gpt4 key购买 nike

我目前正在编写一个需要尽可能好地执行的应用程序。我使用 VS2012 作为我的 IDE(和编译器)。

我注意到,当我迭代 vector 时,与迭代器相比,指针解决方案在速度方面要快得多。这是为什么?我的意思是,迭代器基本上是一样的。至少应该是。

看看这个例子:

std::vector<int> v;
for (std::vector<int>::iterator it = v.begin(); it != v.end(); it++) {
// Do stuff with *it
}

for (int* i = &v[0], i <= &v[v.size()-1]; i++) {
// Do stuff with *i
}

是否有编译器需要的任何优化?我使用的是所有标准设置,因此 -O2 已启用。提前致谢。

编辑:我在 Release 中编译,并使用 Ctrl+F5 运行(没有调试)。

编辑 2:实际的源代码是快速排序的实现。 Here is a link to the full source ,它很短,所以请检查一下。

最佳答案

I'm currently writing an application which needs to perform as good as it can be.

然后使用分析器查看真正的瓶颈在哪里。当然,在优化代码( Release模式)中。

-O2 并不是 VS2012 中的一切:有几个 #defines 操纵标准容器迭代器的行为,以进行边界检查和其他安全检查。您可能想要查找它们(“已检查的迭代器”和“安全 SCL”可能会引导您到正确的站点)并相应地设置它们。

但我非常怀疑容器上的迭代会成为你的瓶颈,还有其他代码部分对性能问题更敏感。

关于c++ - 性能 - 使用迭代器或指针迭代 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15379709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com