switchcase和ifelse效率区别
switch…case写法:
switch(表达式){
case值1:语句1break;
case值2:语句2break;
...
default:语句n break;
}
switch case判断字符串if…else写法:
if(boolean){
}else if(boolean){
}else if(boolean){
}else{
}
由此看来,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⽐较灵活。
4.在已知某⼏种分⽀出现概率较⾼的情况下,使⽤if else,将⾼概率分⽀前⼏位,由于if else是遍历所有值,所以使⽤这种⽅式的效率要⽐switch case⾼
5.分⽀出现概率相同或未知的情况下,分⽀数⼩于5 if else的效率⽐switch case⾼,反之分⽀数⼤于5,switch case效率⽐if else⾼
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论