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

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

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

    wangflood

    精心維護一個技術blog,為了工作,也是愛好。

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      14 Posts :: 19 Stories :: 8 Comments :: 0 Trackbacks
    近幾天,看老大的框架,里面出現這樣的語句for (int i = 0, size = c.size(); i < size; i++),我總覺得這個和for (int i = 0; i < c.size(); i++)沒有什么不同,畢竟java不是C,一般情況下,我們程序給運行了,底層JVM應該給我們優化才是。于是,我寫了個程序對比了一下,發現性能情況還是很大不同的。
    package com.wang.test;

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Set;

    public class Test {
        
    private final static int Length = 1000;

        
    public static void main(String[] args) {
            
    int length = 1000;
            List
    <Double> c = new ArrayList<Double>();
            initSet(c);
            
    long t1 = System.currentTimeMillis();
            test1(c);
            
    long t2 = System.currentTimeMillis();
            test2(c);
            
    long t3 = System.currentTimeMillis();
            test3(c);
            
    long t4 = System.currentTimeMillis();
            test4(c);
            
    long t5 = System.currentTimeMillis();
            System.out
                    .println(
    "*******************************************************************");
            System.out.println(t2 
    - t1);
            System.out.println(t3 
    - t2);
            System.out.println(t4 
    - t3);
            System.out.println(t5 
    - t4);
        }

        
    private static void test3(List<Double> c) {
            
    for (Iterator<Double> iterator = c.iterator(); iterator.hasNext();) {
                System.out.println(iterator.next());

            }

        }

        
    private static void test2(List<Double> c) {
            
    for (int i = 0; i < c.size(); i++) {
                System.out.println(c.get(i));
            }

        }

        
    private static void test4(List<Double> c) {
            
    for (int i = c.size() - 1; i >= 0; i--) {
                System.out.println(c.get(i));
            }

        }

        
    private static void test1(List<Double> c) {
            
    for (int i = 0, size = c.size(); i < size; i++) {
                System.out.println(c.get(i));
            }
        }

        
    private static void initSet(List<Double> c) {
            
    for (int i = 0; i < Length; i++) {
                c.add(Math.random());
            }

        }

    }
    Length==1000時:
    94
    62
    32
    31
    Length==10000時:
    516
    406
    375
    344

    Length==100000時:
    3563
    3453
    3641
    3453
    Length==1000000時:
    35109
    34625
    36469
    34891


    JVM到底有沒有優化呢。我沒有打開匯編看。但至少我得出結論:for (int i = 0, size = c.size(); i < size; i++)這種寫法沒有必要。數據量不大的時候,反而效率低很多。

    各位高手給建議。。。。。。。Why



    posted on 2011-03-29 12:46 wangflood 閱讀(1018) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 五月婷婷免费视频| 人妻无码久久一区二区三区免费 | 三上悠亚电影全集免费| 国产麻豆剧传媒精品国产免费| 亚洲人成网站日本片| 99爱视频99爱在线观看免费| 亚洲AV日韩AV永久无码下载| 精品一区二区三区免费| 亚洲国产女人aaa毛片在线| 久久久久久久久久国产精品免费| 亚洲成色www久久网站夜月| 日韩电影免费在线观看中文字幕| 亚洲欧洲国产精品你懂的| 日本最新免费网站| 亚洲人成电影网站久久| 永久久久免费浮力影院| 一区免费在线观看| 亚洲av永久无码精品古装片| 少妇无码一区二区三区免费| 亚洲一区在线视频观看| 国产在线观看www鲁啊鲁免费| 羞羞的视频在线免费观看| 亚洲无码黄色网址| 无码成A毛片免费| 激情综合亚洲色婷婷五月APP| 日韩免费三级电影| 国产又黄又爽胸又大免费视频| 亚洲va国产va天堂va久久| 国产又黄又爽又猛免费app| 亚洲精品国产av成拍色拍| 亚洲精品麻豆av| 91久久青青草原线免费| 亚洲天然素人无码专区| a级亚洲片精品久久久久久久 | 亚洲一卡一卡二新区无人区| 亚洲А∨精品天堂在线| 一区二区免费视频| 亚洲国产成人久久综合| 亚洲AV无码成人精品区天堂| 久久精品a一国产成人免费网站| 男女啪啪免费体验区|