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当自己升级。。


版权声明:本文博主原创文章。博客,未经同意,不得转载。

原文地址:https://www.cnblogs.com/hrhguanli/p/4757791.html