非常奇怪的结果!
。。!
测试方法如以下
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当自己升级。。
版权声明:本文博主原创文章。博客,未经同意,不得转载。