可能重复:
Is there a performance difference between i++ and ++i in C++?
当我们想要增加整数值时,有人可以解释为什么++ i比i ++快 我想它可能指的是任何编程语言。
答案 0 :(得分:1)
绝对不是。这是一种常见的谬误,它以某种方式继续存在。
注意,当“i”是一个对象,并且正在进行赋值时,“i ++”将调用该对象的副本(++之前的值),而“++ i”则不会。如果不需要,现代编译器将不会执行该对象的副本。
答案 1 :(得分:1)
让我们做一些(毫无意义的)基准测试,以表明它是无关紧要的:
测试代码:(Java)
public class TestIncrement
{
public static void main(String[] av)
{
int x = 0;
int y = 0;
long startTime;
// Postincrement
startTime = System.currentTimeMillis();
while ( startTime + 1000 > System.currentTimeMillis())
{
x++;
}
// Preincrement
startTime = System.currentTimeMillis();
while ( startTime + 1000 > System.currentTimeMillis())
{
++y;
}
// Output
System.out.println("Postincrement: " + x);
System.out.println("Preincrement: " + y);
}
}
输出:
Postincrement: 16039755
Preincrement: 16069900
答案 2 :(得分:0)
当你有一个像
这样的表达式时k = i ++;
k
在递增之前获取i
的旧值,并且我会增加。此副本会产生性能影响,预增量不需要此副本。但有时两者都不可互换。在这个带
k = ++ i;
你将获得k的另一个值。