<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知識】
    主站蜘蛛池模板: 免费无码又爽又刺激高潮软件| 中文字幕免费观看视频| 男女交性无遮挡免费视频| 亚洲视频在线免费| 少妇人妻偷人精品免费视频 | 精品熟女少妇aⅴ免费久久 | 日韩免费在线观看| 狠狠亚洲婷婷综合色香五月排名| 久久精品国产亚洲AV麻豆王友容| 亚洲另类春色校园小说| 国产亚洲精品美女2020久久 | 日韩精品免费视频| 免费精品人在线二线三线区别 | 国产亚洲精品资在线| 亚洲精品国产福利片| 亚洲av无码兔费综合| a在线观看免费网址大全| 无码人妻一区二区三区免费手机| 亚洲А∨精品天堂在线| 亚洲综合久久综合激情久久| 亚洲AV无码专区亚洲AV桃| a级毛片免费高清毛片视频| 国产香蕉九九久久精品免费| 亚洲综合熟女久久久30p| 久久亚洲精品专区蓝色区| 丁香花在线观看免费观看图片| 福利免费观看午夜体检区| 亚洲男人av香蕉爽爽爽爽| 亚洲国产精品yw在线观看| 一区二区免费在线观看| 韩国免费一级成人毛片| 国产亚洲精久久久久久无码AV| 亚洲AV色吊丝无码| 你懂的网址免费国产| 日韩精品免费电影| 久久久久亚洲av无码专区| 日本激情猛烈在线看免费观看 | 亚洲精品高清国产一久久| 激情吃奶吻胸免费视频xxxx| 免费看男女下面日出水来| 国产性爱在线观看亚洲黄色一级片 |