绝大多数的程序员喜欢使用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(); // 开始Memoryfor (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(); // 末尾Memorylong end = System.currentTimeMillis();System.out.println("switch判断"+count+"次用时:"+(end-start)+"毫秒");System.out.println("内存消耗: "+String.valueOf((startMem- endMem)/1024)+"KB");}

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

if效率测试代码:

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(); // 开始Memoryfor (int i = 0; i < count; i++) {int ch=ra.nextInt(10);if(ch==0){}else if(ch==1){}else if(ch==2){}else if(ch==3){}else if(ch==4){}else if(ch==5){}else if(ch==6){}else if(ch==7){}else if(ch==8){}else if(ch==9){}else if(ch==10){}}long endMem =r.freeMemory(); // 末尾Memorylong end = System.currentTimeMillis();System.out.println("if判断"+count+"次用时:"+(end-start)+"毫秒");System.out.println("内存消耗: "+String.valueOf((startMem- endMem)/1024)+"KB");}

100W次if判断,消耗时间31ms,消耗内存1996KB

结论:

综上实验可得:

1、在100W次循环判断过程中switch判断时间消耗将近是if判断的一半

2、在100W次循环判断过程中switch判断内存消耗比if判断节约33.32%

switch-case和if-else的效率比较·必看相关推荐

  1. Switch Case中的经典

    昨天在看JavaScript优化脚本时,其中有一条是使用三元运算符以及switch语句.关于优化代码时,使用Switch Case比If Else要快,这点我们知道,但是三元运算符呢? 在JavaSc ...

  2. [转]C语言茶余饭后之if...else PK switch...case

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kevinyujm/archive/2009/02/18/3907964.aspx 在学校学C的那会儿,就已经知道swi ...

  3. php switch 函数,php switch case用法与实例教程

    switch 语句和 elseif 语句的比较 在 switch 语句中,条件只求一次,然后和每个 case 比较,而在 elseif 语句中,条件会再次求值.如果你的条件比较复杂,或者是多次循环,用 ...

  4. 有了 elseif 为什么还要 switch case

    引出 你有没有想过既然有了if elseif, 为什么还要设计一个switch case的语法出来呢? 按理说, 一个语言的设计角度来说, 关键词越少越好吧, 而且多出来一种选择分支也没有看出太大用处 ...

  5. 如何解决大量的if语句或switch case语句?

    洪流学堂,让你快人几步. 本篇内容来自洪流读书会解读书籍<代码大全2>. 很多面试官喜欢问这样的问题,如何解决大量的if语句或switch case语句?如果你仅仅在优化的层面回答,可能不 ...

  6. 稍加改进的Switch/Case扩展方法

    引言 鹤冲天的<c#扩展方法奇思妙用>系列给了我很多启示,其中的很多用法大大提升了代码编写效率,最近小研究了一下他提供的<c#扩展方法奇思妙用变态篇三:switch/case组扩展& ...

  7. switch case语句的用法

    switch case语句的用法 我们首先来看一下switch case 语句的一般形式是怎样的 switch(表达式){case 常量1 :代码块:break:case 常量2:代码块:break: ...

  8. java switch case 或_Java Switch Case 条件判断

    Java的 Switch Case 语句,可以理解为分支 例子 假设打麻将有四个人 编号为 1 2 3 4 对应名字为 张三,李四,王五,赵六 数据结构 switch(expression){ cas ...

  9. Java switch case 语句

    什么是switch case? switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. switch的语法 switch case 语句语法格式如下: switch( ...

最新文章

  1. 详解图像滤波原理及实现!
  2. 老焦专栏 | 如何做一个有说服力的方案?
  3. java画个半径为1地圆_java - 绘制一个半径为圆的圆并围绕边缘指向 - 堆栈内存溢出...
  4. 前端学习(1663):前端系列实战课程之禁止保存
  5. 线程并发安全导致内存溢出
  6. 如何设置 IDEA炫酷主题样式
  7. 【Python/Pytorch - Bug】-- TypeError: type numpy.ndarray doesn‘t define _round method
  8. IPS(Intrusion Prevention System)入侵防护系统原理
  9. during怎么念_during怎么读音英语 during中文谐音
  10. 博瑞ge 加装无线 carpaly方法和效果展示
  11. AtCoder Beginner Contest 190 E.Magical Ornament
  12. 【视频异常检测-论文阅读】Anomaly Detection in Video via Self-Supervised and Multi-Task Learning
  13. BUU刷题记-网鼎杯专栏2
  14. ubuntu14.0开机guest账号禁用方法
  15. mysql——查询优化案例计算
  16. 部署rtl88xx驱动/rpcapd,支持wireshark远程抓Wifi包
  17. python+opencv多进程实现识别魔方颜色,通过kociemba算法得出算法字符串并画图(附毕设完整视频)
  18. 笑话大全爬虫实战笔记[xiaohua.zol.com.cn]
  19. 鸿蒙系统魔改,华为EMUI 11正式发布,魔改系统可优先升级鸿蒙OS 2.0
  20. STM32 堆栈溢出检测

热门文章

  1. 1157 Anniversary (25 分) c++
  2. 使用pycharm连接远程代码编程
  3. java架构师和C语言架构师,C语言-Java架构师必看
  4. SQL 解析原理和使用场景
  5. 【触手可及,用完即走】
  6. 小米手机8 SE启用Root权限的方法
  7. 问题探讨:Q-plate的前后翻转是否会对结果有影响
  8. 第十二届蓝桥杯大赛软件赛省赛 Python 大学 A 组 试题
  9. Python:终端打印字体颜色
  10. 计算机硬件快捷键,电脑刷新是哪个键 电脑常用快捷键介绍【图文】