在实际的项目开发中,if和switch同为条件语句,然而很多人并不清楚何时使用if语句,何时使用switch.
switch…case语句和if…else效率比较
switch…case结构中有跳转表,输入的字符只要经过一次比较就可以正确的找到跳转分支,所以平均情况下跳转次数为1.
if…else结构如果有n个分支,分别记为n0,n1,n2,n3,…n(i-1),每个分支出现的概率假设未pi,分别为p0,p1,p2,p3,…p(i-1)。执行第一分支前不需要跳转,其它分支均需要跳转,执行第二个分支之前需要跳转一次,第三个分支需要跳转两次…需要跳转平均跳转的次数s为: \
如果>1,则此时if…case的效率是小于switch…case的,如果它的值小于1,此时if…else的效率高于switch…case。
假设if…else分支的每个分支出现的概率相同,即1/n,上面的跳转次数的期望值可以改写为:\。
如果n=3,则期望的跳转次数为1,刚好与switch…case相同。由此,如果选择分支大于3的时候,选用switch…case结构效率会更高一些,而小于3时,选用if…else结构更好。
总结:在选择分支较多时,选用switch…case结构会提高程序的效率,但switch不足的地方在于只能处理字符或者数字类型的变量,if…else结构更加灵活一些,if…else结构可以用于判断表达式是否成立,比如if(a+b>c),if…else的应用范围更广,switch…case结构在某些情况下可以替代if…else结构。