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í)專欄