为什么Java的foreach比for慢??

今天做了简单测试,发现jdk1.5的foreach执行效率比for慢,有些不解,看网上贴子C#的foreach比for要快的
难道是哪用的不对

两个循环代码:
        List<Integer> list = new ArrayList<Integer>();
        for(int i=0;i<5    000000;i++){
            list.add(11);
        }
        long a = System.currentTimeMillis();
        int b= list.size();
        int c=1;
        for(int i=0;i<b;i++){
            c = list.get(i);
        }
        System.out.println(System.currentTimeMillis()-a);
       
   
        List<Integer> list = new ArrayList<Integer>();
        for(int i=0;i<5    000000;i++){
            list.add(11);
        }
        long a = System.currentTimeMillis();
        for(int bb:list){
          
        }
        System.out.println(System.currentTimeMillis()-a);
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(3680) | 评论(2) | 转发(0) |
0

上一篇:linux终端--rxvt

下一篇:CORBA入门

给主人留下些什么吧!~~

chinaunix网友2009-02-26 18:26:13

果然~~~

cuichaox2007-12-15 20:56:01

使用LinkedList试试 有以下猜测: (1)for是使用下标(偏移量)定位的. (2)foreach应该是使用类似循环子的机构 (3)对随机访问效率高的ArrayList. 使用下标访问效率本身很高.foreach内部的循环子直接封装下标,自己实现的for比foreach更直接,效率稍高些,但差别不会太大,仍然在一个数量级上。 (4)如果使用插入和删除效率高的LinkedList,for基于下标访问会每次从头查询,效率会很低.foreach循环子使用高效的地址运算,效率会高.其差距将很大,完全不在一个数量级别.如果数组很大,差别可能会几百甚至上千倍.

评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值