switch和ifelse的⽐较
switch case判断字符串if-else
只是单纯地⼀个接⼀个⽐较;if...else每个条件都计算⼀遍;
switch
使⽤了Binary Tree算法;绝⼤部分情况下switch会快⼀点,除⾮是if-else的第⼀个条件就为true编译器编译switch与编译if...不同。不管有多少case,都直接跳转,不需逐个⽐较查询;switch只计算⼀次值,然后都是test , jmp,
有很多else if的时候,⽤switch case⽐较清晰。switch使⽤查表的⽅式决定了case的条件必须是⼀个连续的常量。⽽if-else则可以灵活的多。对于switch语句来说,起实际是使⽤⼀个跳转表实现分⽀结构,不需要⼀次进⾏⽐较每⼀个所需要的条件。进⾏⽐较的次数为1.但是对于if…else语句来说:最少的⽐较次数为1,跟switch相⽐,在时间⽅⾯,switch语句的执⾏速度⽐if else要快,但是在程序执⾏占⽤的空间⽅⾯,switch语句需要⼀张跳转表来维护。这个跳转,表的本质是⼀个拥有标号的数组,需要额外的存储空间,if else语句的空间效率更好⼀点。switch是⼀个很典型的空间换时间的例⼦。但是switch只能判断是⼀个指定值的数据,⽽不能对⼀个区间中的数据进⾏判断。这时候选择if…else语句是⼀个很好的选择。
switch case与if else的效率问题
switch case与if else的区别:switch case会⽣成⼀个跳转表来指⽰实际的case分⽀的地址,⽽if...else却需要遍历条件分⽀直到命中条件。
switch case的优缺点
(1)switch case的优点:
当分⽀较多时,⽤switch的效率是很⾼的。因为switch是确定了选择值之后直接跳转到那个特定的分⽀.
(2)switch case的缺点:
ase占⽤较多的代码空间,因为它要⽣成跳表,特别是当case常量分布范围很⼤但实际有效值⼜⽐较少的情况,ase的空间利⽤率将变得很低。
ase只能处理case为常量的情况。
if else的优缺点
(1)if else的优点:if else能应⽤于更多的场所以if else⽐较灵活。
(2)if else的缺点:if else必须遍历所以的可能值。
总结:
在选择分⽀较多时,选⽤switch…case结构会提⾼程序的效率,但switch不⾜的地⽅在于只能处理字符或者数字类型的变量,if…else结构更
加灵活⼀些,if…else结构可以⽤于判断表达式是否成⽴,⽐如if(a+b>c),if…else的应⽤范围更⼴,switch…case结构在某些情况下可以替代if…else结构。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。