if...else与switch...case的执行效率问题

Posted 倒立的蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了if...else与switch...case的执行效率问题相关的知识,希望对你有一定的参考价值。

switch语句比if else的执行效率要高

 switch...case与if...else的根本区别

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

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

以上是关于if...else与switch...case的执行效率问题的主要内容,如果未能解决你的问题,请参考以下文章

if else与switch case

JS入门基础(if else 与 switch case / node安装)

if else和switch case那个效率更高一点

switch case vs if else [重复]

分支语句 if...else switch..case...break

使用对象代替复杂的if else,switch case