if与switch的性能比较

摘要:
如果if和switch都实现相同的功能,应使用哪种方法?在检查了一些其他数据后,switch的执行速度并不总是比if快。当数据量达到1万或百万级时,if的执行速度将比switch快。但顺便说一下,大多数方法的控制条件数不会超过两位数,对吧?If在某些情况下更适合表达逻辑,switch有其优点。据我所知,switch的控制表达式将依次匹配case之后的值。

前言

之前学习Java时,遇到了个问题,有点纠结。当ifswitch都实现相同的功能时,该改采用哪种方法实现?
我并不懂得如何准确测量两者之间的性能区别,便在OlineJudge上找条该类型的题,来测试两者的性能结果
好,废话不多说,看图

下面是运行结果,前者为if的,后者为switch的

if与switch的性能比较第1张

switch的实现

if与switch的性能比较第2张

if的实现

if与switch的性能比较第3张
虽然两者的结果相比,占用内存相同,运行时间相差较大,
但是OnlineJudge所用的数据是否相同、数据量多大及是否相同等等都不清楚。

之后翻查了一些其他资料,switch的执行速度并不是一直都超过if,当数据量达到万级或者百万级时,if的执行速度反而会比switch更快

但是试问一下,大多数方法的控制条件数量都不会超两位数吧?
所以相比追求更快的运行速度,还不如选择合适的方法实现该功能。

if在某些情景更适合表达逻辑,而switch也有它的优势。就我知道而言,switch的控制表达式依次与case后的值匹配。遇到相对应的值时,执行对应的执行体,没有break时继续往下执行。

所以我们可以根据case标签的执行频率排列case标签的顺序进一步提高速度

免责声明:文章转载自《if与switch的性能比较》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇(转载)Qt中的类型转换SQLyog下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Element-ui tabs标签标题添加自定义图标

关键点:slot="label"{{item.label}}˂iclass="el-icon-questi...

kafka命令

启动kafka:./kafka-server-start.sh../config/server.properties&查看topic./kafka-topics.sh--zookeeper192.168.8.56:2181,192.168.8.70:2181,192.168.8.147:2181--describe--topicliuhangjun....

DB2字符函数简介及使用

Param2可以是编码单元16-16位UTF-16编码,也就是说,字符串表示为16位UTF-18编码字符串。Codeunits32-32位UTF-32编码,即字符串表示为32位UTF 32编码字符串。请注意,定义为FORBITDATA的字符串不能转换为图形字符。如果length<length,则来自的原始字符串短于结果中的长度。...

开源跳板机jumpserver的安装部署和使用详细教程及踩坑经验

安装篇jumpserver需要依赖于mysql数据库,python开发工具的支持,所以需要安装一系列软件。按照提示进行所有流程的安装,安装完成之后访问http://ip:8000端口即可登录到jumpserver。因为jumpserver会在被管理的后端主机上通过此处指定的管理用户来添加指定的用户和sudo权限:配置sudo授权,用于添加sudo授权。...

VMware虚拟机几个常用文件夹介绍

将在虚拟机系统文件下自动生成三个锁文件。虚拟系统正常关闭后,VMware将解锁,“systemTyep.vmdk.lck”和“systemType.vmem”文件夹将消失。当RAM运行缓慢时,它会将数据从RAM移动到一个称为“分页文件”的空间。...

avue 常用修改

1.搜索栅栏调整colum中对象的属性:searchSpan:4,column:[{label:"模型名称",prop:"name",search:true,searchSpan:4,},2.搜索框字段位置长度column:[{label:"流程标题23423432",searchLabelWidth:200,3.编辑页面,字段lable宽度设置labelW...