switch与ifelse的效率问题
2016-05-11 10:21
447 查看
看源码的时候看到对一个数值类型数据进行比对时,一直使用的ifelse条件判断,就想为什么不用switch来比较,他们两个哪个效率更高一些,下面的文章是我查找的一些感觉不错的解答,后期自己也会做一些测试。我太懒了....
1.switch与ifelse的效率问题:/article/8078641.html
2.还有黑马大神的一些解答:
⒈
1.switch与ifelse的效率问题:/article/8078641.html
2.还有黑马大神的一些解答:
⒈
1.switch用来根据一个整型值进行多路分支,并且编译器可以对多路分支进行优化 2.switch-case只将表达式计算一次,然后将表达式的值与每个case的值比较,进而选 择执行哪一个case的语句块 3.if..else 的判断条件范围较广,每条语句基本上独立的,每次判断时都要条件加载 一次。 所以在多路分支时用switch比if..else if .. else结构要效率高。 ⒉ 首先要看一个问题,if 语句适用范围比较广,只要是 boolean 表达式都可以用 if 判断;而 switch 只能对基本类型进行数值比较。两者的可比性就仅限在两个基本类型比较的范围内。 说到基本类型的数值比较,那当然要有两个数。然后重点来了—— if 语句每一句都是独立的,看下面的语句: if (a == 1) ... else if (a == 2) ... 这样 a 要被读入寄存器两次,1 和 2 分别被读入寄存器一次。于是你是否发现其实 a 读两次是有点多余的,在你全部比较完之前只需要一次读入寄存器就行了,其余都是额外开销。但是 if 语句必须每次都把里面的两个数从内存拿出来读到寄存器,它不知道你其实比较的是同一个 a。 于是 switch case 就出来了,把上面的改成 switch case 版本: switch (a) { case 0: break; case 1: } 3. 因为当虚拟机读到switch的时候将所有的判断数据都加载在内存中了,而if是边判断边加载,所以就慢一些, 一般如果判断数据不多,而且是byte,short,int或是char类型的时候一般用switch,那样效率比较高. |
相关文章推荐
- jquery------.cycle的使用
- SharedPreferencesUtil
- 获取元素CSS值之getComputedStyle方法
- Butter Knife
- jQuery学习和知识点总结归纳
- js中基本操作
- css定义超级链接a标签里面的title的样式
- zyUpload界面绝佳、体验超棒的HTML5上传插件
- IOS端 微信 safari chrome 的jQuery on delegate 事件无效
- javascript基础(1)
- js读取并解析excel文件,之后上传json到服务器
- 自定义复选框、单选按钮外观方法。支持IE、Firefox、chrome
- bootstrap 简单教程
- [NodeJS]Jenkins-cli
- [JS]HTML中把图片划分成多个作用区域的区域标记
- jquery attr与prop 的区别
- jQuery的框架介绍
- html5 postMessage解决跨域、跨窗口消息传递
- 289. Game of Life
- 前端js干货