什么更有效,i ++或++ i?

Ber*_*yan 15 c++ java performance pre-increment post-increment

确切重复:在C++中i ++和++ i之间是否存在性能差异?
确切重复:循环中i ++和++ i之间的区别?


什么更有效,i ++或++ i?

我只在Java和C/C++中使用过这个,但我真的要求实现它的所有语言.

在大学里我有一位教授告诉我们++我更有效率,但已经有几年了,我想从Stack Overflow社区获得意见.

Edo*_* A. 48

我++:

  • 创建一个i的临时副本
  • 增量我
  • 返回临时副本

++ i:

  • 增量我
  • 回来我

通过优化,生成的程序集很可能是相同的,但++ i更有效.

编辑:请记住,在C++中,我可能是支持前缀和后缀++运算符的任何对象.对于复杂对象,临时复制成本不可忽略.

  • 这取决于"我"是什么. (4认同)

Tor*_*gen 37

我会寻找其他优化潜力.


God*_*eke 7

效率不应该是你的关注:它是意义.这两者是一样的,除非它们是独立的:一个操作预先使用价值,另一个操作.

int i; i = 1; cout << i ++; //返回1

int i; i = 1; cout << ++ i; //返回2

当意义不重要时,大多数编译器会将++ i和i ++(比如for循环)转换为相同的机器/ VM代码.


Ted*_*Ted 5

它在现代编译器上无关紧要.

int v = i++;  
Run Code Online (Sandbox Code Playgroud)

是相同的

int v = i;
i = i + 1;
Run Code Online (Sandbox Code Playgroud)

现代编译器将发现v未使用且计算的代码v是纯粹的(没有副作用).然后它将删除v和分配代码,并将生成此

i = i + 1;
Run Code Online (Sandbox Code Playgroud)