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


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

  • 相关阅读:
    给DOM元素绑定click事件也有学问
    几个JavaScript的浏览器差异处理问题
    CSS样式权重的级联cascade的概念
    你知道HTML标签设计的本意吗?
    一些奇怪的JavaScript试题
    JavaScript如何计算两个日期间的时间差
    Vim默认开启语法标识功能
    理解Python中的继承规则和继承顺序
    An Easy Introduction to CUDA C and C++
    super()
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4757791.html
Copyright © 2020-2023  润新知