很奇怪的结果!!!!
测试程序如下
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什么时候自己升级的。。