qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          Java list三種遍歷方法性能比較

            從c/c++語(yǔ)言轉(zhuǎn)向java開(kāi)發(fā),學(xué)習(xí)java語(yǔ)言list遍歷的三種方法,順便測(cè)試各種遍歷方法的性能,測(cè)試方法為在ArrayList中插入1千萬(wàn)條記錄,然后遍歷ArrayList,發(fā)現(xiàn)了一個(gè)奇怪的現(xiàn)象,測(cè)試代碼例如以下:
          package com.hisense.tiger.list;
          import java.util.ArrayList;
          import java.util.Iterator;
          import java.util.List;
          public class ListTest {
          public static void main(String[] args)
          {
          List<String> list = new ArrayList<String>();
          long t1,t2;
          for(int j = 0; j < 10000000; j++)
          {
          list.add("aaaaaa" + j);
          }
          System.out.println("List first visit method:");
          t1=System.currentTimeMillis();
          for(String tmp:list)
          {
          //System.out.println(tmp);
          }
          t2=System.currentTimeMillis();
          System.out.println("Run Time:" + (t2 -t1) + "(ms)");
          System.out.println("List second visit method:");
          t1=System.currentTimeMillis();
          for(int i = 0; i < list.size(); i++)
          {
          list.get(i);
          //System.out.println(list.get(i));
          }
          t2=System.currentTimeMillis();
          System.out.println("Run Time:" + (t2 -t1) + "(ms)");
          System.out.println("List Third visit method:");
          Iterator<String> iter = list.iterator();
          t1=System.currentTimeMillis();
          while(iter.hasNext())
          {
          iter.next();
          //System.out.println(iter.next());
          }
          t2=System.currentTimeMillis();
          System.out.println("Run Time:" + (t2 -t1) + "(ms)");
          System.out.println("Finished!!!!!!!!");
          }
          }
            測(cè)試結(jié)果例如以下:
            List first visit method:
            Run Time:170(ms)
            List second visit method:
            Run Time:10(ms)
            List Third visit method:
            Run Time:34(ms)
            Finished!!!!!!!!
            測(cè)試的結(jié)論非常奇怪,第一種方法是java語(yǔ)言支持的新語(yǔ)法,代碼最簡(jiǎn)潔,可是在三種方法中,性能確是最差的,取size進(jìn)行遍歷性能是最高的,求牛人解釋?

          posted on 2014-11-24 10:01 順其自然EVO 閱讀(201) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄

          <2014年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 明光市| 晋城| 菏泽市| 屯留县| 星座| 耒阳市| 临漳县| 卢氏县| 鄱阳县| 白玉县| 淅川县| 通城县| 涞水县| 杭锦旗| 翁牛特旗| 牡丹江市| 卢湾区| 霍林郭勒市| 黄龙县| 海淀区| 特克斯县| 庆阳市| 和静县| 噶尔县| 南岸区| 璧山县| 温州市| 喀什市| 平邑县| 高清| 阳春市| 丰县| 自贡市| 太原市| 河源市| 肃宁县| 平阳县| 阳江市| 修文县| 扎囊县| 中卫市|