首页 > 代码库 > 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倍?!