<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无码网站| 亚洲无mate20pro麻豆| 亚欧免费无码aⅴ在线观看| 亚洲精品无码高潮喷水在线| 成年网站免费入口在线观看| 亚洲狠狠爱综合影院婷婷| 成人在线免费视频| 久久精品国产亚洲5555| 中文字幕免费观看视频| 国外亚洲成AV人片在线观看| 中文字幕乱码系列免费| 亚洲综合色自拍一区| 久久久久久国产a免费观看不卡 | 亚洲精品无码av片| 日本黄色免费观看| 特级aaaaaaaaa毛片免费视频| 亚洲一区二区三区乱码A| a级毛片在线免费| 亚洲精品自在在线观看| 花蝴蝶免费视频在线观看高清版| 亚洲AV第一页国产精品| 国产福利视精品永久免费| 亚洲中文字幕无码爆乳| 国产午夜无码视频免费网站| 国产精品福利片免费看| 久久精品国产亚洲夜色AV网站| 69视频在线观看免费| 亚洲欧美第一成人网站7777| 亚洲国产成人久久综合一区77| 亚洲一区二区三区免费| 亚洲精品综合一二三区在线| 好吊妞在线成人免费| 乱淫片免费影院观看| 亚洲av无码一区二区三区网站 | 亚洲日本乱码一区二区在线二产线 | 亚洲天堂一区在线| 免费A级毛片无码A| 三年片在线观看免费观看大全一 | 免费jjzz在在线播放国产| 99久久国产精品免费一区二区|