switch case 与if else的效率问题

  最近看突然看到switch case 与if else的效率问题,明面上说是switch case不需要像if else一样挨个的去执行去判断条件,所以效率高 很快,转念一想,switch case 为什么不需要判断,深入了解了一下switch case,云里雾里但是有了一个大致了解,switch case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号而到达定位分支的目的,需要注意的是,跳转表是一个数组,而且并不是只要使用switch就会使用跳转表,当case数量比较多时,例如4个以上,就会使用跳转表。

  swicth 是确定了值之后直接跳转到那个分支,另一方面,switch需要空间去存放这些跳转的索引,所以跳转表会占用空间,尤其case量多范围大而有效值低的情况下,即所谓的空间换时间。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值