<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA—咖啡館

    ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks
    由于本人的一個低級失誤,造成結論錯誤,for才是最終的勝者。foreach和iterator是類似的機制,性能都不是很好。以下代碼已經重新調整,再次道歉。

    以前一直有人說,foreach的性能有損失,不建議使用,今天特意測試了一下,結果是 for方式的性能最好,foreach次之,而Iterator循環性能最差..

    1 完整的測試代碼
    view plaincopy to clipboardprint?
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    /**
    * 測試JAVA各種循環的性能。<br>
    * for 方式的性能最好,foreach次之,而Iterator循環性能最差。
    *
    * @author 老紫竹研究室(laozizhu.com)
    */
    public class TestLoop {
    public static void main(String[] args) {
    int number = 1000000;
    // 我們構造一個列表
    List<String> list = new ArrayList<String>(number);
    for (int i = 0; i < number; i++) {
    list.add(Integer.toString(i));
    }
    System.out.println("測試列表的性能...");
    // 我們用foreach方式測試
    long begin = System.nanoTime();
    for (String i : list) {
    testMethod(i);
    }
    System.out.printf("%10s=%10d\n", "foreach", System.nanoTime() - begin);
    begin = System.nanoTime();
    // 下面我們用Iterator測試
    Iterator<String> it = list.iterator();
    while (it.hasNext()) {
    testMethod(it.next());
    }
    System.out.printf("%10s=%10d\n", "iterator", (System.nanoTime() - begin));

    // 第三種,我們用index進行
    begin = System.nanoTime();
    for (int i = 0; i < number; i++) {
    testMethod(list.get(i));
    }
    System.out.printf("%10s=%10d\n", "for", (System.nanoTime() - begin));
    System.out.println("測試數組的性能...");
    // 我們再來測試數組
    String[] strArr = new String[number];
    for (int i = 0; i < number; i++) {
    strArr[i] = Integer.toString(i);
    }
    // 我們用foreach方式測試
    begin = System.nanoTime();
    for (String i : strArr) {
    testMethod(i);
    }
    System.out.printf("%10s=%10d\n", "foreach", System.nanoTime() - begin);
    // 第二種,我們用index進行
    begin = System.nanoTime();
    for (int i = 0; i < number; i++) {
    testMethod(strArr[i]);
    }
    System.out.printf("%10s=%10d\n", "for", System.nanoTime() - begin);
    }
    public static void testMethod(String str) {
    }
    }

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    /**
    * 測試JAVA各種循環的性能。<br>
    * for 方式的性能最好,foreach次之,而Iterator循環性能最差。
    *
    * @author 老紫竹研究室(laozizhu.com)
    */
    public class TestLoop {
    public static void main(String[] args) {
    int number = 1000000;
    // 我們構造一個列表
    List<String> list = new ArrayList<String>(number);
    for (int i = 0; i < number; i++) {
    list.add(Integer.toString(i));
    }
    System.out.println("測試列表的性能...");
    // 我們用foreach方式測試
    long begin = System.nanoTime();
    for (String i : list) {
    testMethod(i);
    }
    System.out.printf("%10s=%10d\n", "foreach", System.nanoTime() - begin);
    begin = System.nanoTime();
    // 下面我們用Iterator測試
    Iterator<String> it = list.iterator();
    while (it.hasNext()) {
    testMethod(it.next());
    }
    System.out.printf("%10s=%10d\n", "iterator", (System.nanoTime() - begin));

    // 第三種,我們用index進行
    begin = System.nanoTime();
    for (int i = 0; i < number; i++) {
    testMethod(list.get(i));
    }
    System.out.printf("%10s=%10d\n", "for", (System.nanoTime() - begin));
    System.out.println("測試數組的性能...");
    // 我們再來測試數組
    String[] strArr = new String[number];
    for (int i = 0; i < number; i++) {
    strArr[i] = Integer.toString(i);
    }
    // 我們用foreach方式測試
    begin = System.nanoTime();
    for (String i : strArr) {
    testMethod(i);
    }
    System.out.printf("%10s=%10d\n", "foreach", System.nanoTime() - begin);
    // 第二種,我們用index進行
    begin = System.nanoTime();
    for (int i = 0; i < number; i++) {
    testMethod(strArr[i]);
    }
    System.out.printf("%10s=%10d\n", "for", System.nanoTime() - begin);
    }
    public static void testMethod(String str) {
    }
    }

    2 運行結果
    測試列表的性能...
    foreach= 41997864
    iterator= 43951774
    for= 14351289
    測試數組的性能...
    foreach= 1751863
    for= 1484585

    3 結論:
    foreach的性能很一般,for才是最好的,推薦大家使用。
    posted on 2009-05-14 11:34 rogerfan 閱讀(360) 評論(0)  編輯  收藏 所屬分類: 【Java知識】
    主站蜘蛛池模板: 亚洲欧洲国产视频| 国产亚洲精品va在线| 国产成人精品亚洲2020| 久久综合九色综合97免费下载| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲国产精久久久久久久| 黄色网站软件app在线观看免费| 久久亚洲2019中文字幕| 99免费在线视频| 亚洲av女电影网| 黄在线观看www免费看| 中文字幕亚洲男人的天堂网络| 成人黄色免费网址| 亚洲小说图区综合在线| 免费大香伊蕉在人线国产 | 国产在线播放线91免费| 亚洲A∨无码一区二区三区| 久久久久久国产精品免费无码| 亚洲黄色免费观看| 久久WWW免费人成人片| 一级做a爰片久久免费| 久久精品九九亚洲精品天堂| 亚洲网站在线免费观看| 精品国产亚洲AV麻豆| 亚洲综合色视频在线观看| 免费福利电影在线观看| 中文字幕 亚洲 有码 在线| 亚洲日韩中文在线精品第一| 久久免费精品视频| 久久亚洲精品专区蓝色区| 亚洲国产精品自在拍在线播放| 暖暖免费在线中文日本| 亚洲一区二区三区高清不卡| 四虎永久在线精品视频免费观看| a毛片全部免费播放| 2020久久精品亚洲热综合一本 | 亚洲精品中文字幕乱码影院| 四虎永久成人免费| 在线成人爽a毛片免费软件| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲精品无码专区在线在线播放|