if else和switch case那个效率更高一点

switch...case写法:

switch (表达式){
case 值1 : 语句1 break;
case 值2 : 语句2 break;
...
default : 语句n break;
}

if...else写法:

if(boolean){

}else if(boolean){

}else if(boolean){

}else{

}

由此看来,switch有点以空间换时间的意思,而事实上也的确如此。
1.当分支较多时,当时用switch的效率是很高的。因为switch是随机访问的,就是确定了选择值之后直接跳转到那个特定的分支,但是if。。else是遍历所以得可能值,知道找到符合条件的分支。如此看来,switch的效率确实比ifelse要高的多。
2.由汇编代码可知道,switch...case占用较多的代码空间,因为它要生成跳表,特别是当case常量分布范围很大但实际有效值又比较少的情况,switch...case的空间利用率将变得很低。

3.switch...case只能处理case为常量的情况,对非常量的情况是无能为力的。例如 if (a > 1 && a < 100),是无法使用switch...case来处理的。所以,switch只能是在常量选择分支时比ifelse效率高,但是ifelse能应用于更多的场合,ifelse比较灵活。

原文地址:https://www.cnblogs.com/ricklz/p/10345908.html

时间: 2024-08-01 19:52:36

if else和switch case那个效率更高一点的相关文章

.NET快速信息化系统开发框架 V3.2-&gt;WinForm版本新增新的角色授权管理界面效率更高、更规范

角色授权管理模块主要是对角色的相应权限进行集中设置.在角色权限管理模块中,管理员可以添加或移除指定角色所包含的用户.可以分配或授予指定角色的模块(菜单)的访问权限.可以收回或分配指定角色的操作(功能)权限.可以对所有角色.用户.模块(菜单).操作(功能)权限进行集中批量设置,角色户授权范围的设置(类似于用户授权范围的设置),表字段权限的设置以及表约束条件权限的设置等. 在角色授权管理模块可以对指定角色进行相应权限的分配与收回,添加与移除角色所拥有的用户,对角色所拥有的操作功能.模块访问权限等进行

浅析PHP的静态成员函数效率更高原因所在

php类的静态成员函数效率比类的普通成员函数的要高. 例子: <?php // php静态方法测试 header('Content-Type: text/html; charset=utf-8'); class xclass{ public static $var1 = '1111111111111111'; public $var2 = 'aaaaaaaaaaaaa'; public function __construct() { $this -> var2 = 'bbbbbbbbbbbb

一种效率更高的for循环

var i,array=[]; for(i=array.length;i--;) { //处理代码 } 1.for循环中使用更少的变量 2.逐步减至0,这样会更快,因为同0比较比同数组的长度比较,或同非0数组比较更有效率. 一种效率更高的for循环

Spring AOP中的JDK和CGLib动态代理哪个效率更高?

一.背景 今天有小伙伴面试的时候被问到:Spring AOP中JDK 和 CGLib动态代理哪个效率更高? 二.基本概念 首先,我们知道Spring AOP的底层实现有两种方式:一种是JDK动态代理,另一种是CGLib的方式. 自Java 1.3以后,Java提供了动态代理技术,允许开发者在运行期创建接口的代理实例,后来这项技术被用到了Spring的很多地方. JDK动态代理主要涉及java.lang.reflect包下边的两个类:Proxy和InvocationHandler.其中,Invoc

Python实用技巧:比普通的赋值方式效率更高的二元赋值

python支持类似于a += 3这种二元表达式.比如: 1 a += 3 -> a = a + 3 2 a -= 3 -> a = a - 3 3 a *= 3 -> a = a * 3 4 ... 在python中的某些情况下,这种二元赋值表达式可能比普通的赋值方式效率更高些.原因有二: 二元赋值表达式中,a可能会是一个表达式,它只需计算评估一次,而a = a + 3中,a要计算两次. 对于可变对象,可以直接在原处修改得到修改后的值,而普通的一元赋值表达式必须在内存中新创建一个修改后

Java新手学习路线,0基础学习Java怎样效率更高?

Java是老牌编程语言,拥有扎实的群众基础和广阔的市场应用,从业人员薪资也普遍较高.很多人想要加入到Java开发行列,不过0基础学习Java怎样效率更高? 很多0基础学习Java的同学想知道怎样学习效率更高?小编以为,学习Java需要一个系统的过程,而根据你未来的职位方向不同,学习也各有侧重.目前来说,Java就业方向包括Web开发.大数据开发.Android开发以及各种后端服务开发领域,但不论你选择哪一个,都要从最基础的知识点学习. Java基础知识点多且杂,初学者在开始的时候需要认识什么是J

WM_PAINT消息在窗口重绘的时候产生,那什么时候窗口会重绘(异步工作方式,效率更高,灵活性更强)

Q:wm_paint消息在窗口重绘的时候产生,那什么时候窗口会重绘?? A: 严格地说,只有当收到WM_PAINT消息后窗口会重绘 但是引起这个消息的事件有很多, 比如: 首次创建 移动 改变大小 showwindow/ activate window/ invalidate window .... 系统为什么不在调用Invalidate时发送WM_PAINT消息呢?又为什么非要等应用消息队列为空时才发送WM_PAINT消息呢?这是因为系统把在窗口中的绘制操作当作一种低优先级的操作,于是尽可能地

Hashtable Dictionary List 谁效率更高

一 前言 很少接触HashTable晚上回来简单看了看,然后做一些增加和移除的操作,就想和List 与 Dictionary比较下存数据与取数据的差距,然后便有了如下的一此测试, 当然我测的方法可能不是很科学,但至少是我现在觉得比较靠谱的方法.如果朋友们有什么好的方法,欢迎提出大家来交流下. 先来简单介绍这三个容器的各自特点吧  1 hashtable 散列表(也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的数据结构. 2 List<T> 是针对特定类型.任意长度的一

作为自由职业者,如何规划好自己的时间,让自己工作效率更高

无论你是全职的自由职业者还是只是将其作为一个兼职,你需要妥善的协调业务和生活之间的关系.成功的自由职业者已经制定了一套个人的规则和程序,帮助他们有效地工作. 在这里,我们有10个建议,可以帮助你每天工作的更有条理,训练自己更好的工作.使你的日常工作流程更加井井有条. 1.每日计划 一个高效的工作起源于一个好的计划,你准备这一天干什么呢? 列出你一天的工作然后将其划分成若干个小任务,逐一完成.在心里提前构思好你的工作将如何展开.计划一周内哪几天出去跑业务,哪几天在家处理工作,什么时候见客户.安排好