java基礎(chǔ)之if else和switch case效率對(duì)比

結(jié)論:switch比if快10倍左右。
原理分析:

1.switch用來根據(jù)一個(gè)整型值進(jìn)行多路分支,并且編譯器可以對(duì)多路分支進(jìn)行優(yōu)化

2.switch-case只將表達(dá)式計(jì)算一次,然后將表達(dá)式的值與每個(gè)case的值比較,進(jìn)而選擇執(zhí)行哪一個(gè)case的語句塊

3.if..else 的判斷條件范圍較廣,每條語句基本上獨(dú)立的,每次判斷時(shí)都要條件加載一次。所以在多路分支時(shí)用switch比if..else if .. else結(jié)構(gòu)要效率高。

下面是測(cè)試使用的代碼:


package com.carl.java.base.flowControl;

/**
 *
 * 結(jié)論:switch比if快10倍左右。
 * 原理分析:
 * 1.switch用來根據(jù)一個(gè)整型值進(jìn)行多路分支,并且編譯器可以對(duì)多路分支進(jìn)行優(yōu)化
 * 2.switch-case只將表達(dá)式計(jì)算一次,然后將表達(dá)式的值與每個(gè)case的值比較,進(jìn)而選擇執(zhí)行哪一個(gè)case的語句塊
 * 3.if..else 的判斷條件范圍較廣,每條語句基本上獨(dú)立的,每次判斷時(shí)都要條件加載一次。所以在多路分支時(shí)用switch比if..else if .. else結(jié)構(gòu)要效率高。
 */
public class TestIfSwitchEfficiency {
    public static void main(String[] args) {
        String aaa = "aaa";
        long t1 = System.nanoTime();
        if("a".equals(aaa)){
            System.out.println(aaa);
        } else if ("b".equals(aaa)) {
            System.out.println(aaa);
        } else if ("c".equals(aaa)) {
            System.out.println(aaa);
        } else if ("d".equals(aaa)) {
            System.out.println(aaa);
        } else if ("e".equals(aaa)) {
            System.out.println(aaa);
        } else if ("f".equals(aaa)) {
            System.out.println(aaa);
        } else if ("g".equals(aaa)) {
            System.out.println(aaa);
        } else if ("h".equals(aaa)) {
            System.out.println(aaa);
        } else if ("i".equals(aaa)) {
            System.out.println(aaa);
        } else if ("j".equals(aaa)) {
            System.out.println(aaa);
        } else if ("k".equals(aaa)) {
            System.out.println(aaa);
        } else if ("l".equals(aaa)) {
            System.out.println(aaa);
        } else if ("m".equals(aaa)) {
            System.out.println(aaa);
        } else if ("n".equals(aaa)) {
            System.out.println(aaa);
        } else {
            System.out.println(aaa);
        }
        long t2 = System.nanoTime();
        System.out.println("if : " + (t2 - t1));

        //switch語句測(cè)試代碼:

        long tt1 = System.nanoTime();
        switch (aaa) {
            case "a":
                System.out.println(aaa);
                break;
            case "b":
                System.out.println(aaa);
                break;
            case "c":
                System.out.println(aaa);
                break;
            case "d":
                System.out.println(aaa);
                break;
            case "e":
                System.out.println(aaa);
                break;
            case "f":
                System.out.println(aaa);
                break;
            case "g":
                System.out.println(aaa);
                break;
            case "h":
                System.out.println(aaa);
                break;
            case "i":
                System.out.println(aaa);
                break;
            case "j":
                System.out.println(aaa);
                break;
            case "k":
                System.out.println(aaa);
                break;
            case "l":
                System.out.println(aaa);
                break;
            case "m":
                System.out.println(aaa);
                break;
            case "n":
                System.out.println(aaa);
                break;
            default:
                System.out.println(aaa);
                break;
        }
        long tt2 = System.nanoTime();
        System.out.println("switch : " + (tt2 - tt1));
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Java 簡(jiǎn)介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)...
    子非魚_t_閱讀 4,667評(píng)論 1 44
  • 控制流 [TOC] Swift提供了多種流程控制結(jié)構(gòu),包括可以多次執(zhí)行任務(wù)的while循環(huán),基于特定條件選擇執(zhí)行不...
    伍哥___閱讀 587評(píng)論 0 0
  • Swift提供了多種控制流聲明。包括while循環(huán)來多次執(zhí)行一個(gè)任務(wù);if,guard和switch聲明來根據(jù)確定...
    BoomLee閱讀 2,078評(píng)論 0 3
  • ??1.記憶第四組自己的超級(jí)記憶宮殿?。ɡ霞遥?1.鐵門2.摩托車3.瓷磚4.水管5.水桶6.廚房7.爐灶8.木柴9...
    Celine_z閱讀 320評(píng)論 0 1
  • 晚上十一點(diǎn)我還在跟遠(yuǎn)哥爭(zhēng)著是看柯南還是看龍珠,后來我妥協(xié)了,遠(yuǎn)哥說看柯南我會(huì)害怕! 后來遠(yuǎn)哥說去洗澡,...
    萌萌的萌meng閱讀 300評(píng)論 0 0

友情鏈接更多精彩內(nèi)容