我在Java中使用這種代碼,使用兩種不同類型的循環。在這段代碼中,爲什麼第二個循環比第一個循環慢?
public class Test {
public static void main(String[] args){
long fl = 0, wl = 0;
int i = 0;
int a = 0;
long start = 0, stop = 0;
start = System.currentTimeMillis();
while(i<2000000000){
if(i%2 == 0)
a++;
else
a--;
i++;
}
stop = System.currentTimeMillis();
wl = stop-start/2;
System.out.println("\nWhile loop = "+wl);
i = 0;
a = 0;
start = 0;
stop = 0;
start = System.currentTimeMillis();
for(;i<2000000000;){
if(i%2 == 0)
a++;
else
a--;
i++;
}
stop = System.currentTimeMillis();
fl = stop-start/2;
System.out.println("For loop = "+fl);
System.out.println("Difference = "+(fl-wl));
}
}
現在,多次運行該程序後,我得出的結論是,第二個循環總是執行比第一循環慢。起初,我認爲它與一個for循環和另一個while循環有關,但即使當我顛倒了順序時,第二個循環仍然執行得更慢。這是一個示例運行的輸出。
While loop = 688721817947
For loop = 688721824295
Difference = 6348
現在,爲什麼會發生這種情況。
你真的想嘗試解釋一個小於'0.000001%'的差異嗎? – dasblinkenlight