下面是一个示例代码:为什么连续调用两次相同的方法会产生不同的执行时间?
public class TestIO{
public static void main(String[] str){
TestIO t = new TestIO();
t.fOne();
t.fTwo();
t.fOne();
t.fTwo();
}
public void fOne(){
long t1, t2;
t1 = System.nanoTime();
int i = 10;
int j = 10;
int k = j*i;
System.out.println(k);
t2 = System.nanoTime();
System.out.println("Time taken by 'fOne' ... " + (t2-t1));
}
public void fTwo(){
long t1, t2;
t1 = System.nanoTime();
int i = 10;
int j = 10;
int k = j*i;
System.out.println(k);
t2 = System.nanoTime();
System.out.println("Time taken by 'fTwo' ... " + (t2-t1));
}
}
这给出了以下的输出:通过 'FONE' 所需的时间... 390273 通过 'fTwo' 所需的时间.. 118451 'fOne'所用的时间... 53359 'fTwo'所用的时间... 115936 按任意键继续。 。 。
为什么第一次执行同样的方法比连续调用需要更多时间(显着更多)?
我试着给-XX:CompileThreshold=1000000
的命令行,但没有区别。