【发布时间】:2015-10-29 18:02:23
【问题描述】:
所以我的问题更笼统。我有以下简单的代码:
for(int i=0;i<10;i++){
long starttime=System.nanoTime();
System.out.println("test");
long runtime=System.nanoTime()-starttime;
System.out.println(i + ":" +"runtime="+runtime);
}
我收到以下输出:
test
0:runtime=153956
test
1:runtime=15396
test
2:runtime=22860
test
3:runtime=11197
test
4:runtime=11197
test
5:runtime=12129
test
6:runtime=11663
test
7:runtime=11664
test
8:runtime=53185
test
9:runtime=12130
第一个和第二个运行时出现差异的原因是什么?提前感谢=)
【问题讨论】:
-
stackoverflow.com/questions/860231/… 参考这个问题,它可能会有所帮助。
-
优化/预测可能吗? + 首次静态“测试”初始化
-
JVM 使用 JIT 编译器将 jvm 字节码编译成真正的机器码。编译时间包含在第一个区间内。