for循环中的前后增量

lok*_*oko 0 java performance for-loop pre-increment post-increment

在java中的for循环中执行预增量与后增量是否更高效?

示例代码:

for (int i=0; i<10; i++)
Run Code Online (Sandbox Code Playgroud)

for (int i=0; i<10; ++i)
Run Code Online (Sandbox Code Playgroud)

我注意到当我做一个预增量时,执行时间比我进行后增量时要小.为什么会出现这种情况的任何建议?谢谢.

jlo*_*rdo 10

我编译了一个最小的例子(Oracle jdk1.7.0_07):

public void post() {
    for (int i=0; i<10; i++) {

    }
}

public void pre() {
    for (int i=0; i<10; ++i) {

    }
}
Run Code Online (Sandbox Code Playgroud)

两种方法都生成相同的字节码:

 0 iconst_0
 1 istore_1
 2 goto 8 (+6)
 5 iinc 1 by 1
 8 iload_1
 9 bipush 10
11 if_icmplt 5 (-6)
14 return
Run Code Online (Sandbox Code Playgroud)