C++程序中,i++和++i的性能是否有所差异?
i++和++i的效果相同。唯一差别在于i++先对i进行赋值,再对i进行加1,而++i则是先对i加1,再对i进行赋值。我们可以在下面的代码中看出两者的差异。
示例代码
#include<iostream> using namespace std; int main() { int x = 3, y, z; y = x++; z = ++x; cout << x << ", " << y << ", " << z; return 0; }
输出
5, 3, 5
现在的问题是,既然两个函数执行相同的任务,但是执行顺序不同,那么是否会存在性能问题,或者两者是一样的?
嗯,这两个操作的性能很大程度上取决于底层架构。其中一个是对存储在内存中的值进行自增,这意味着冯·诺依曼瓶颈基本上是两种情况的限制因素。
不过我们可以说++i比i++略快。在进行自增之前,i++会取得i的一个局部副本,而++i则不会。有时,如果可能,一些编译器会优化代码。但这种优化并不总是有效的,或者并非所有编译器都会这样做。
Advertisement