关于switchcase和ifelse的效率对比分析

switch…case与if…else的根本区别在于:
switch…case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch…case不用像if…else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。

具体地说,switch…case会生成一份大小(表项数)为最大case常量+1的跳表,程序首先判断switch变量是否大于最大case 常量,若大于,则跳到default分支处理;否则取得索引号为switch变量大小的跳表项的地址(即跳表的起始地址+表项大小*索引号),程序接着跳到此地址执行,到此完成了分支的跳转。

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://blog.csdn.net/qq_29463709/article/details/78709393

switch case和if else比较

https://blog.csdn.net/weixin_43862101/article/details/84859437?ops_request_misc=&request_id=&biz_id=102&utm_term=switch%20case%E5%92%8Cifelse%E5%8C%BA%E5%88%AB&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-84859437.nonecase&spm=1018.2226.3001.4187

关于switchcase和ifelse的效率对比分析相关推荐

  1. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析

    PHP遍历数组的三种方法及效率对比分析 发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  2. mysql bulk update_Django bulk_create()、update()与数据库事务的效率对比分析

    下面以创建10000个对象为例进行测试: # 用for循环挨个创建,共花费37秒 for i in range(10000): name="String number %s"%i ...

  3. php高效遍历,PHP 遍历数组的三种方法及效率对比分析

    PHP 遍历数组的三种方法及效率对比分析 本文实例分析了 PHP 遍历数组的三种方法及效率对比分享给大家供大家参考具体分析如下: 今天有个朋友问我一个问题 php 遍历数组的方法, 告诉她了几个顺便写 ...

  4. 城市交通出行效率对比分析与思考

    来源:规划与交通 出行效率是指居民以最少的出行投入(包含最少的货币成本和时间成本.最舒适和最安全的出行体验等),利用某种交通方式完成某种出行目的的活动.出行效率强调的是"全过程"出 ...

  5. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析_php技巧

    本文实例分析了PHP遍历数组的三种方法及效率对比.分享给大家供大家参考.具体分析如下: 今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个.顺便写个文章总结下,如果总结不全还请朋友们指出 第一 ...

  6. php 遍历 效率高,PHP遍历数组的三种方法及效率对比分析

    这篇文章主要介绍了PHP遍历数组的三种方法及效率对比,实例分析了foreach.while与for三种遍历数组的方法与相关的效率比对,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例分析了PHP遍 ...

  7. switch-case和if-else的效率比较·必看

    绝大多数的程序员喜欢使用if判断,但是真的效率高吗?还是其它的,可能只会用if呢!我们今天就具体测一测,用事实说话,测试量100W: 理论上,switch是利用空间换时间.为了避免实验干扰,先行执行了 ...

  8. switch if c语言效率,switch与ifelse的效率问题

    switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的.从而,swi ...

  9. JDBC与数据库连接工具对比分析

    JDBC 使用步骤: 注册数据库驱动 通过DriverManager获取数据库连接 通过Connection对象获取Statement对象 使用Statement执行SQL语句 操作ResultSet ...

  10. 【星云测试】精准测试的软件产品质量效率变化分析

    2019独角兽企业重金招聘Python工程师标准>>> 精准测试的软件产品质量效率变化分析 伴随着软件规模的扩大和软件快速迭代的双重业务加速要求,软件质量控制的压力也越来越明显.但黑 ...

最新文章

  1. python元类的简单了解
  2. sql 除以_刷完这些SQL练习题,简单查询就熟能生巧了
  3. 先查询后修改并发的时候sql_如何解决并发场景下扣款的数据一致性问题?
  4. SLF4J user manual
  5. JAVA流-File文件
  6. 数据类型不一致: 应为 NUMBER, 但却获得 BINARY
  7. clustalw序列比对_几个多序列比对软件:Muscle,ClustalW和T
  8. c++string 加引号_C++|引用计数与shared_ptr智能指针(以实现String类为例)
  9. opencv的逻辑运算bitwise详解
  10. 在线文件不落地转base64
  11. 谷歌EfficientNet高效卷积网络的学习和使用
  12. 如何判断视频的比例(4:3/16:9)和分辨率?
  13. dapper mysql_.NET Core Dapper操作mysql数据库的实现方法
  14. Node(Next)+React实现飞书扫码登录+鉴权的详细开发过程
  15. 5G终于来了,物联网将是未来五年要重点关注的行业
  16. 基于c#开发的汉诺塔游戏
  17. Android 下载网络图片保存到本地
  18. 盛大游戏黄炎中——\悍将传世\开发经验谈
  19. 曝光更丑恶的人贩子行为!呼吁政府救救这些孩子!
  20. 动态左侧二级下拉菜单 基于bootstrap js

热门文章

  1. python转txt到xml并编译为exe
  2. 【人类历史】从食物采集者到食物生产者
  3. iOS 全横屏app设置
  4. [游泳] 全浸式游泳呼吸法
  5. python鼠标移动到网页上、获取网页信息_python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法...
  6. opencv将RGB转成YIQ
  7. java技术 新 阶段作业,北邮网院web技术阶段作业
  8. 终端服务器超出了最大允许连接数解决办法
  9. 计算的威力,智慧的传奇——Fabrice Bellard
  10. NeHe OpenGL教程 第十三课:图像字体