美文网首页
java基础之if else和switch case效率对比

java基础之if else和switch case效率对比

作者: 雨读千年 | 来源:发表于2018-03-03 00:15 被阅读0次
    结论:switch比if快10倍左右。
    原理分析:

    1.switch用来根据一个整型值进行多路分支,并且编译器可以对多路分支进行优化

    2.switch-case只将表达式计算一次,然后将表达式的值与每个case的值比较,进而选择执行哪一个case的语句块

    3.if..else 的判断条件范围较广,每条语句基本上独立的,每次判断时都要条件加载一次。所以在多路分支时用switch比if..else if .. else结构要效率高。

    下面是测试使用的代码:


    package com.carl.java.base.flowControl;
    
    /**
     *
     * 结论:switch比if快10倍左右。
     * 原理分析:
     * 1.switch用来根据一个整型值进行多路分支,并且编译器可以对多路分支进行优化
     * 2.switch-case只将表达式计算一次,然后将表达式的值与每个case的值比较,进而选择执行哪一个case的语句块
     * 3.if..else 的判断条件范围较广,每条语句基本上独立的,每次判断时都要条件加载一次。所以在多路分支时用switch比if..else if .. else结构要效率高。
     */
    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语句测试代码:
    
            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));
        }
    }
    
    

    相关文章

      网友评论

          本文标题:java基础之if else和switch case效率对比

          本文链接:https://www.haomeiwen.com/subject/aegzxftx.html