确切重复:在C++中i ++和++ i之间是否存在性能差异?
确切重复:循环中i ++和++ i之间的区别?
什么更有效,i ++或++ i?
我只在Java和C/C++中使用过这个,但我真的要求实现它的所有语言.
在大学里我有一位教授告诉我们++我更有效率,但已经有几年了,我想从Stack Overflow社区获得意见.
我++:
创建一个i的临时副本
增量我
返回临时副本
++ i:
增量我
回来我
通过优化,生成的程序集很可能是相同的,但++ i更有效.
编辑:请记住,在C++中,我可能是支持前缀和后缀++运算符的任何对象.对于复杂对象,临时复制成本不可忽略.
我会寻找其他优化潜力.
效率不应该是你的关注:它是意义.这两者是不一样的,除非它们是独立的:一个操作预先使用价值,另一个操作.
int i; i = 1; cout << i ++; //返回1
int i; i = 1; cout << ++ i; //返回2
当意义不重要时,大多数编译器会将++ i和i ++(比如for循环)转换为相同的机器/ VM代码.
它在现代编译器上无关紧要.
int v = i++;
是相同的
int v = i; i = i + 1;
现代编译器将发现v
未使用且计算的代码v
是纯粹的(没有副作用).然后它将删除v
和分配代码,并将生成此
i = i + 1;