【蓝桥杯Java_C组·从零开始卷】第二节(附)、if与switch效率比较(千万次/一亿次)上

简介: 【蓝桥杯Java_C组·从零开始卷】第二节(附)、if与switch效率比较(千万次/一亿次)

前言:

分支数


小于三时,else if 效率更高


等于三时,效率近乎相同


大于三时,switch case效率更高


if与switch小于三次对比:

package Action;
public class HelloWorld {
  static int count=10000000;
  public static void main(String[] args) {
    if_test();
    System.gc();//清理一下
    switch_test();
  }
  public static void if_test() {
    long start = System.currentTimeMillis();
    for (int i = 0; i <count; i++) {
      if(i==(10000000-1)) {
        System.out.println("if判断一千万次");
      }
    }
    long end = System.currentTimeMillis();
    System.out.println("if判断一千万次"+(end-start)+"毫秒");
  }
  public static void switch_test() {
    long start = System.currentTimeMillis();
    for (int i = 0; i <count; i++) {
      switch(i) {
        case 10000000-1:System.out.println("switch判断一千万次");break;
      }
    }
    long end = System.currentTimeMillis();
    System.out.println("switch判断一千万次"+(end-start)+"毫秒");
  }
}

49.png

区别还算明显吧,量少,可以用一亿试试。

package Action;
public class HelloWorld {
  static int count=100000000;
  public static void main(String[] args) {
    if_test();
    System.gc();//清理一下
    switch_test();
  }
  public static void if_test() {
    long start = System.currentTimeMillis();
    for (int i = 0; i <count; i++) {
      if(i==(100000000-1)) {
        System.out.println("if判断一亿次");
      }
    }
    long end = System.currentTimeMillis();
    System.out.println("if判断一亿次"+(end-start)+"毫秒");
  }
  public static void switch_test() {
    long start = System.currentTimeMillis();
    for (int i = 0; i <count; i++) {
      switch(i) {
        case 100000000-1:System.out.println("switch判断一亿次");break;
      }
    }
    long end = System.currentTimeMillis();
    System.out.println("switch判断一亿次"+(end-start)+"毫秒");
  }
}

三个的时候其实还是if快一些。

40.png

这就很明显了。

if与switch等于三次对比:

package Action;
public class HelloWorld {
  static int count=10000000;
  public static void main(String[] args) {
    switch_test();
    if_test();
  }
  public static void if_test() {
    long start = System.currentTimeMillis();
    for (int i = 0; i <count; i++) {
      if(i==(10000000-1)) {
        System.out.println("if判断一千万次");
      }else if(i==-1) {
      }else if(i==-2){
      }
    }
    long end = System.currentTimeMillis();
    System.out.println("if判断一千万次"+(end-start)+"毫秒");
  }
  public static void switch_test() {
    long start = System.currentTimeMillis();
    for (int i = 0; i <count; i++) {
      switch(i) {
        case 10000000-1:System.out.println("switch判断一千万次");break;
        case -1:break;
        case -2:break;
      }
    }
    long end = System.currentTimeMillis();
    System.out.println("switch判断一千万次"+(end-start)+"毫秒");
  }
}

50.png

三个的时候其实还是if快一些。


相关文章
|
4天前
|
Java 测试技术
Java一分钟之-控制流程:if条件语句与switch
【5月更文挑战第8天】本文探讨了Java编程中的`if`和`switch`控制流程语句,强调了常见问题和易错点。对于`if`语句,需注意使用大括号避免逻辑错误,完整比较操作,以及理解`&&`和`||`的短路行为。在`switch`语句中,要注意只能基于常量进行判断,每个`case`后应有`break`,并提供`default`分支。避免错误的策略包括始终使用大括号、确保清晰的条件、进行代码审查和编写单元测试。掌握这些要点对编写高效、可维护的代码至关重要。
12 0
Java一分钟之-控制流程:if条件语句与switch
|
20天前
|
Java
Java枚举与Switch
Java枚举与Switch
11 0
|
28天前
|
Java
Java switch case 语句
4月更文挑战第11天
|
1月前
|
存储 Java
模式匹配魔法:Java 21中switch语句的巨大进化
模式匹配魔法:Java 21中switch语句的巨大进化
14 0
|
1月前
|
Java
掌握Java 17的利器:Switch语句升级,模式匹配闪耀登场
掌握Java 17的利器:Switch语句升级,模式匹配闪耀登场
21 0
|
1月前
|
Java
Java 14 强势登场:Switch 表达式的进化之路
Java 14 强势登场:Switch 表达式的进化之路
30 0
|
2月前
|
Java
Java switch case 语句
Java switch case 语句
10 0
|
2月前
|
Java
【Java从入门到精通】Java switch case 语句
【Java从入门到精通】Java switch case 语句
21 0
|
3月前
|
Java 数据安全/隐私保护 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-193 Password Suspects(C++&Java)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-193 Password Suspects(C++&Java)
20 1
|
3月前
|
机器学习/深度学习 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-Java全排列公式
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-Java全排列公式
37 0