switch与ifelse效率
来源:互联网 发布:淘宝助理上传宝贝步骤 编辑:程序博客网 时间:2024/04/25 22:39
前言
资料显示switch较if else执行效率高。
区别
switch与if else根本区别在switch生成一跳转表指示实际case分支地址,该跳转表索引号与switch变量值相等。从而switch不像if else遍历条件分支直到命中条件,而只需访问对应索引号表项到达对应分支。
具体说,switch生成一份大小(表项数)为最大case常量+1跳表,程序先判断switch变量是否大于最大case常量,大于跳default分支处理;否则取得索引号为switch变量大小跳表项地址(即跳表起始地址+表项大小*索引号),程序接着跳该地址执行,完成分支跳转。
总结
switch似空间换时间
分支较多用switch效率高。因switch随机访问,即确定选择值后直接跳转对应分支,但if else遍历直到找到符合条件分支。故switch效率比if else高。
switch占用代码空间较多,因需生成跳表,特别当case常量分布范围很大但实际有效值较少,switch空间利用率变得很低。
switch只能处理case为常量情况。故switch在常量选择分支比if else效率高,但if else可应用更多场合,较灵活。
阅读全文
0 0
- switch与ifelse效率
- switch与ifelse的效率问题
- switch与ifelse的效率问题
- switch与ifelse的效率问题
- switch与ifelse的效率问题
- switch与ifelse的效率问题
- switch与ifelse的效率问题
- switch与ifelse的效率问题
- switch与ifelse的效率问题
- switch与ifelse的效率问题
- php中switch与ifelse的效率区别
- php中switch与ifelse的效率区别可
- switch与ifelse
- 三元运算符与ifelse效率比较
- switch与if的效率
- DAY_02浅谈ifelse与switch语句的不同 菜狗子的修炼之路
- theano tutorial(六)IfElse vs Switch
- if else 与switch 效率&实现机制
- Rxjava+Retrofit系列
- 博客迁移至github pages
- elasticsearch和kibana安装后,外网无法访问
- 深度学习的实践方面Quiz 1
- 我将要在51CTO博客有个新家
- switch与ifelse效率
- centos7离线手动安装mysql-5.7
- jar包中读取资源文件
- CLion+MinGW CMake进行静态链接,解决程序出现缺少libgcc_s_dw2-1.dll问题
- TensorFlow入门(十-III)tfrecord 图片数据 读写
- bootstrap-table父子表
- REM vs EM
- Android 常用框架汇总
- sklearn工具包---分类效果评估(acc、recall、F1、ROC、回归、距离)