<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知識】
    主站蜘蛛池模板: 亚洲无mate20pro麻豆| 午夜成人无码福利免费视频| 四虎在线视频免费观看| 阿v视频免费在线观看| 亚洲av无码乱码国产精品| 99久久精品日本一区二区免费| 久久精品国产亚洲AV| 亚洲av最新在线网址| 四虎成人精品一区二区免费网站| igao激情在线视频免费| 亚洲国产成人超福利久久精品| 亚洲?v无码国产在丝袜线观看| 亚洲精品免费视频| 国产成人va亚洲电影| 久久精品国产亚洲AV嫖农村妇女| 精品免费久久久久久成人影院| 国产一区二区三区免费| 亚洲国产精品自在自线观看| 亚洲va无码手机在线电影| 国产精品久免费的黄网站| 99久久99热精品免费观看国产| 美女黄网站人色视频免费| 亚洲av乱码一区二区三区香蕉| 国产午夜亚洲精品理论片不卡| 免费看www视频| 2015日韩永久免费视频播放| 一级一级一级毛片免费毛片| 亚洲乱码卡一卡二卡三| 久久精品亚洲福利| 日本免费一区二区三区最新vr| 91av视频免费在线观看| 一级做a免费视频观看网站| 亚洲国产精品美女久久久久| 亚洲精品中文字幕无码AV| 国产亚洲AV手机在线观看 | 成年免费大片黄在线观看岛国| 国产成人自产拍免费视频| 亚洲av综合av一区二区三区| 亚洲AV无码一区二区三区人 | 风间由美在线亚洲一区| 亚洲国产精品综合久久2007|