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量多范围大而有效值低的情况下,即所谓的空间换时间。

猜你喜欢

转载自blog.csdn.net/Rucimeili/article/details/81219813