1. 程式人生 > >Java For迴圈效率測試

Java For迴圈效率測試

很奇怪的結果!!!!

測試程式如下

public class Main {

	public static void main(String[] args){

        	long ti = System.currentTimeMillis();
        	for(int i=Integer.MIN_VALUE;i<Integer.MAX_VALUE;i++){
        	    if(i==i) continue;
        	}
        	System.out.println(System.currentTimeMillis()-ti);
        	

        	ti = System.currentTimeMillis();
        	for(int i=Integer.MIN_VALUE;i<Integer.MAX_VALUE;i++){
        	    continue;
        	}
        	System.out.println(System.currentTimeMillis()-ti);
	}

}

輸出結果
6
1320

問題1:

在for迴圈中加入判斷後,迴圈執行的時間竟然差這麼多。。

以上是問題,看下面這個測試,你會發現更有意思

public class Main {

	public static void main(String[] args){
        	
        	long ti = System.currentTimeMillis();
        	long c = 0;
        	for(int i=Integer.MIN_VALUE;i<Integer.MAX_VALUE;i++){
        	    c++;
        	    if(i==i) continue;
        	}
        	System.out.println(System.currentTimeMillis()-ti + "  "+c);
        	
        	ti = System.currentTimeMillis();
        	c=0;
        	for(int i=Integer.MIN_VALUE;i<Integer.MAX_VALUE;i++){
        	    c++;
        	    continue;
        	}
        	System.out.println(System.currentTimeMillis()-ti+ "  "+c);
	}

}
同樣輸出
93  4294967295
7847  4294967295

僅僅是在迴圈內做了一次++操作,耗時竟然增加了近10倍!

不得不說,java!你的執行效率實在是慘不忍睹。。。。

java版本:  javac 1.7.0_25

求解釋:

在for迴圈中加入判斷與不加判斷,執行時間相差為什麼會相差200倍?!

-------------------------------------------------------------------------------------------------

今天又測試一次,java版本不知道什麼時候變成了這個樣子: javac 1.7.0_55    結果不再和上次測試一樣,看來上次是遇到bug了。。  而且也不知道java什麼時候自己升級的。。