国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

For與while時間的對比

lcodecorex / 1890人閱讀

摘要:結果分析雖然我沒有代碼,但是我猜測是循環執行語句的多少差別。如果有更好的原因可以評論或者發起后話生命不息,技術不止。很多時候我也為了代碼量的減少不理會運行時間的差異,這次吸收教訓,之后在實際開發會更加注意時間。

????本文首發于cartoon的博客
????轉載請注明出處:https://cartoonyu.github.io/cartoon-blog/post/java/for%E4%B8%8Ewhile%E6%97%B6%E9%97%B4%E7%9A%84%E5%AF%B9%E6%AF%94/

????相關文章:JAVA遍歷機制的性能的比較

前言

索引隨機訪問數組相信是很常見的操作.

但是昨天在做leetcode的Reverse String時,發現了很奇怪的現象,具體如下圖

當時我也覺得不可思議,怎么快了那么多,所以今天復盤一下。

正文

注:這篇文章只涉及原始數組的索引遍歷,不涉及包裝數據結構以及foreach

測試代碼

for

private static void textFor(){
        int[] data=new int[1000];
        int i=0;
        for(;i<1000;i++){
            data[i]=i;
        }
        i=0;
        long start=System.currentTimeMillis();
        for(;i<1000;i++){
            System.out.print(data[i]+" ");
        }
        long end=System.currentTimeMillis();
        System.out.println();
        System.out.println("for use:"+(end-start)+"ms");
    }

while

private static void textWhile(){
        int[] data=new int[1000];
        int i=0;
        for(;i<1000;i++){
            data[i]=i;
        }
        i=0;
        long start=System.currentTimeMillis();
        while(i<1000){
            System.out.print(data[i++]+" ");
        }
        long end=System.currentTimeMillis();
        System.out.println();
        System.out.println("while use:"+(end-start)+"ms");
    }
結果
for use:35ms
while use:15ms

for use:14ms
while use:6ms

for use:14ms
while use:8ms

for use:20ms
while use:5ms

所用時間可能不一樣,但是大概比例應該跟我的差不多

有點意外的是,while比for竟然要少一倍(大概)的時間,顛覆了我之前的認知。

結果分析

雖然我沒有debug代碼,但是我猜測是循環執行語句的多少差別。

for中,執行順序是

判斷循環變量是否越界

執行打印語句

循環變量自增

while中,執行順序是

判斷循環變量是否越界

執行打印語句,循環變量自增

與for相比,while所執行的語句量少掉1/3,所以我覺得這就是原因。(如果有更好的原因可以評論或者發起Issue)

后話

生命不息,技術不止。

很多時候我也為了代碼量的減少不理會運行時間的差異,這次吸收教訓,之后在實際開發會更加注意時間。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74982.html

相關文章

  • Python中單線程、多線程和多進程效率對比實驗

    摘要:中單線程多線程與多進程的效率對比實驗多線程多進程中多線程和多進程的對比是運行在解釋器中的語言,查找資料知道,中有一個全局鎖,在使用多進程的情況下,不能發揮多核的優勢。 title: Python中單線程、多線程與多進程的效率對比實驗date: 2016-09-30 07:05:47tags: [多線程,多進程,Python]categories: [Python] meta: Pyt...

    niceforbear 評論0 收藏0
  • JavaScript 之 核心語法 [ 語句 ]

    摘要:語句概況描述在代碼中,使用分號分隔的可以叫做是語句語句塊在代碼中,大括號表示語句塊語句塊中可以存在一條或多條語句語句的分類條件語句循環語句跳轉語句條件語句描述通過對條件表達式的計算結果進行判斷,來決定要執行的語句語句語法條件表達式語句塊當 語句概況 描述 在JavaScript代碼中,使用分號(;)分隔的可以叫做是語句 語句塊 在JavaScript代碼中,大括號({})表示語句塊 ...

    stormjun 評論0 收藏0
  • 數組常見遍歷循環方法、數組循環遍歷效率對比

    摘要:場景檢查數組中是否含有某個東西和是對立的案例案例是否包含為對象循環遍歷效率對比參考參考原生實現等方法其他參考 1 遍歷數組的方法 1-1、for / while 最普通的循環 效率最高 兼容ie6tips:for循環更適用于循環的開始和結束已知,循環次數固定的場合;while循環更適合于條件不確定的場合 1-2、for in 兼容ie6,效率最差(效率可看最下面的對比) for in...

    xfee 評論0 收藏0
  • 如何對前端圖片主題色進行提取?這篇文章詳細告訴你

    摘要:由此,我嘗試著利用在前端進行圖片主題色的提取。一主題色算法目前比較常用的主題色提取算法有最小差值法中位切分法八叉樹算法聚類色彩建模法等。 本文由云+社區發表 圖片主題色在圖片所占比例較大的頁面中,能夠配合圖片起到很好視覺效果,給人一種和諧、一致的感覺。同時也可用在圖像分類,搜索識別等方面。通常主題色的提取都是在后端完成的,前端將需要處理的圖片以鏈接或id的形式提供給后端,后端通過運行相...

    jkyin 評論0 收藏0
  • 如何對前端圖片主題色進行提???這篇文章詳細告訴你

    摘要:由此,我嘗試著利用在前端進行圖片主題色的提取。一主題色算法目前比較常用的主題色提取算法有最小差值法中位切分法八叉樹算法聚類色彩建模法等。 本文由云+社區發表 圖片主題色在圖片所占比例較大的頁面中,能夠配合圖片起到很好視覺效果,給人一種和諧、一致的感覺。同時也可用在圖像分類,搜索識別等方面。通常主題色的提取都是在后端完成的,前端將需要處理的圖片以鏈接或id的形式提供給后端,后端通過運行相...

    Neilyo 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<