switch-case和if-else的效率比较·必看(上)

简介: switch-case和if-else的效率比较·必看(上)

绝大多数的程序员喜欢使用if判断,但是真的效率高吗?还是其它的,可能只会用if呢!我们今天就具体测一测,用事实说话,测试量100W:

理论上,switch是利用空间换时间。为了避免实验干扰,先行执行了gc()操作,后面提示了对应的内存消耗。


本文采用的是【Java】语言进行测试,后续会有【Python】【C#】


switch效率测试代码:


public static void main(String[] args) {
        /**
         * switch与if效率测试·测试次数为100W
         */
        int count=1000000;
        Random ra = new Random();
        Runtime r = Runtime.getRuntime();
        r.gc();//计算内存前先垃圾回收一次
        long start = System.currentTimeMillis();
        long startMem = r.freeMemory(); // 开始Memory
        for (int i = 0; i < count; i++) {
            int ch=ra.nextInt(10);
            switch (ch){
                case 0:break;
                case 1:break;
                case 2:break;
                case 3:break;
                case 4:break;
                case 5:break;
                case 6:break;
                case 7:break;
                case 8:break;
                case 9:break;
                default:break;
            }
        }
        long endMem =r.freeMemory(); // 末尾Memory
        long end = System.currentTimeMillis();
        System.out.println("switch判断"+count+"次用时:"+(end-start)+"毫秒");
        System.out.println("内存消耗: "+String.valueOf((startMem- endMem)/1024)+"KB");
    }


100W次swtich判断,消耗时间15ms,消耗内存1331KB


微信图片_20220112152443.png

相关文章
|
2月前
|
前端开发 编译器
为什么switch里的case没有break不行
为什么switch里的case没有break不行
|
7月前
|
Java
Java程序设计基础——switch选择语句
Java程序设计基础——switch选择语句
|
7月前
|
编译器 C语言
learn_C_deep_7 (switch 语句的基本理解、case 的作用、break的作用switch、case 推荐规则)
learn_C_deep_7 (switch 语句的基本理解、case 的作用、break的作用switch、case 推荐规则)
|
测试技术 API 数据库
如何设计自动化测试Case?
测试工作的本质是尽可能以更高的效率保障交付产出物的质量满足甚至超出预期,这是所有测试工作的最终目标。
如何设计自动化测试Case?
|
算法 编译器 C语言
if else 和 switch的效率
switch在判断分支时,没有判断所有的可能性,而是用一个静态表来解决这个问题,所以速度要比if-else快。 但是,switch对较复杂的表达式进行判断,所以当我们需要判断一些简单数值时,用switch较好。
3468 0
|
存储 开发工具
CASE 工具有哪些
<h2 style="color:rgb(18,18,20); font-weight:normal; letter-spacing:-1px; margin:0.2em 0.2em 0.2em 0px; font-size:1.7em; line-height:1.5em; padding:0px; position:relative; left:0px; font-family:Ver
3746 0
封装一个RxCondition,告别if else和switch case
封装一个RxCondition,告别if else和switch case
127 0
switch-case和if-else的效率比较·必看(下)
switch-case和if-else的效率比较·必看(下)
213 0
switch-case和if-else的效率比较·必看(下)
|
Java 程序员 C#
switch-case和if-else的效率比较·必看(上)
switch-case和if-else的效率比较·必看(上)
switch-case和if-else的效率比较·必看(上)
|
Oracle Java 关系型数据库
if快还是switch快?解密switch背后的秘密(上)
if快还是switch快?解密switch背后的秘密
274 0
if快还是switch快?解密switch背后的秘密(上)