非常基本的代码性能

时间:2010-11-05 22:50:49

标签: c# java c++

  

可能重复:
  Is there a performance difference between i++ and ++i in C++?

当我们想要增加整数值时,有人可以解释为什么++ i比i ++快 我想它可能指的是任何编程语言。

3 个答案:

答案 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的另一个值。