增量变速

时间:2016-09-01 22:02:12

标签: java

为什么++ i比i ++快1ms?在记忆的背景中发生了什么。

结果:

i ++:3ms

++ i:2ms

这是我用来测试的方法。

    int TERM = Integer.MAX_VALUE;

    long startTime = System.currentTimeMillis();

    for(int i = 0; i < TERM;)
    {
        i++;
        // ++i;
    }

    long endTime = System.currentTimeMillis();

    System.out.println(endTime - startTime);

1 个答案:

答案 0 :(得分:-1)

你不能在java中考虑这个级别,因为JIT会非常敏感地将你的代码包装在机器级别。

如果你编写++ i或i ++,它将被转换为字节代码以完全相同的指令集。

这两个字节都是:

Code:
       0: iconst_0      
       1: istore_1      
       2: iload_1       
       3: iload_0       
       4: if_icmpge     13
       7: iinc          1, 1
      10: goto          2
      13: return