下面是一個示例代碼:爲什麼連續調用兩次相同的方法會產生不同的執行時間?
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
的命令行,但沒有區別。