美文网首页
Java----switch与if..else的性能比较

Java----switch与if..else的性能比较

作者: 莫宝咯 | 来源:发表于2017-12-15 17:05 被阅读0次

    private static long checkIfTime(String str) {
    long l = System.nanoTime();
    if (str.contains("Internal_Version")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("SM_FM")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("MTK_Enginner")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("SaleStat")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("SAR")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("Factory_Agent")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("Normal_Agent")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("Monkey_Test")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("Customer_FM")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("GOOGLE_ID")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("HW_Info")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("Sales_Setting")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("SW_Version")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("Custom_Factory_Mode")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("Reset_Factory")) {
    System.out.print("\tstr,\t");
    } else if (str.contains("Sw_Version")) {
    System.out.print("\tstr,\t");
    }
    long l1 = System.nanoTime();
    System.out.print("if..else方式,消耗时间为:" + (l1 - l));
    return l1 - l;
    }

    private static long checkSwitchTime(String str) {
    long l = System.nanoTime();
    switch (str) {
    case "Internal_Version":
    System.out.print("\tstr,\t");
    break;
    case "SM_FM":
    System.out.print("\tstr,\t");
    break;
    case "MTK_Enginner":
    System.out.print("\tstr,\t");
    break;
    case "SaleStat":
    System.out.print("\tstr,\t");
    break;
    case "SAR":
    System.out.print("\tstr,\t");
    break;
    case "Factory_Agent":
    System.out.print("\tstr,\t");
    break;
    case "Normal_Agent":
    System.out.print("\tstr,\t");
    break;
    case "Monkey_Test":
    System.out.print("\tstr,\t");
    break;
    case "Customer_FM":
    System.out.print("\tstr,\t");
    break;
    case "GOOGLE_ID":
    System.out.print("\tstr,\t");
    break;
    case "HW_Info":
    System.out.print("\tstr,\t");
    break;
    case "Sales_Setting":
    System.out.print("\tstr,\t");
    break;
    case "SW_Version":
    System.out.print("\tstr,\t");
    break;
    case "Custom_Factory_Mode":
    System.out.print("\tstr,\t");
    break;
    case "Reset_Factory":
    System.out.print("\tstr,\t");
    break;
    case "Sw_Version":
    System.out.print("\tstr,\t");
    break;
    default:
    break;
    }
    long l1 = System.nanoTime();
    System.out.print("switch方式,消耗时间为:" + (l1 - l));
    return l1 - l;
    }

    //比较switch 与 if..else的性能,取了三个值,多次比较
    public static void main(String[] args) {

        long internal_version  = checkIfTime("Internal_Version");
        long internal_version1 = checkSwitchTime("Internal_Version");
        System.out.println(",消耗时间是它的" + (double) (internal_version /                         internal_version1) + "倍");
    
        System.out.println("\t========================================分割线========================================");
    
        long sw_version  = checkIfTime("Sw_Version");
        long sw_version1 = checkSwitchTime("Sw_Version");
        System.out.println(",消耗时间是它的" + (double) (sw_version / sw_version1) + "倍");
    
        System.out.println("\t========================================分割线========================================");
    
        long Factory_Agent  = checkIfTime("Factory_Agent");
        long Factory_Agent1 = checkSwitchTime("Factory_Agent");
        System.out.println(",消耗时间是它的" + (double) (Factory_Agent / Factory_Agent1) + "倍");
    

    }

    结论:

    第一次,
    str, if..else方式,消耗时间为:152626 str, switch方式,消耗时间为:16224,消耗时间是它的9.0倍
    ========================================分割线========================================
    str, if..else方式,消耗时间为:19829 str, switch方式,消耗时间为:8413,消耗时间是它的2.0倍
    ========================================分割线========================================
    str, if..else方式,消耗时间为:7210 str, switch方式,消耗时间为:5108,消耗时间是它的1.0倍

    第二次,

    str,    if..else方式,消耗时间为:112666 str,    switch方式,消耗时间为:13220,消耗时间是它的8.0倍
    ========================================分割线========================================
    str,    if..else方式,消耗时间为:18027  str,    switch方式,消耗时间为:8112,消耗时间是它的2.0倍
    ========================================分割线========================================
    str,    if..else方式,消耗时间为:7511   str,    switch方式,消耗时间为:5107,消耗时间是它的1.0倍
    

    综合来看,大多数情况下,switch 性能比if..else要快几倍,少则一倍,多则七,八倍

    相关文章

      网友评论

          本文标题:Java----switch与if..else的性能比较

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