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什么时候自己升级的。。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值