我正在编写一个需要尽可能发挥性能的应用程序。我的IDE(和编译器)是VS2012。
我注意到,当我迭代向量时,与迭代器相比,指针解决方案在速度上要快得多。为什么会这样呢?我的意思是,迭代器基本上是相同的东西。至少应该是。
看看这个例子:
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。提前致谢。
编辑: 我正在发布中编译,并使用Ctrl+F5运行(不带调试)。
编辑2: 实际的源代码是快速排序的实现。这里是完整源代码的链接,非常简短,请查看。