if-else 对比 switch
条件数量越大,越频向于使用 switch 而不是 if-else。
条件较少时 if-else 更易读,相反 switch 更易读
优化 if-else
目标:最小化到达正确分支前所有需要的判单条件数量,最简单的方法确保最可能出现的条件放在首位。
例如:
if(value<5){
//代码处理
}else if(value >5 && value<10){
}else{
}
if-else 中的条件语句应该总是按照从最大概率到最小概率的顺序排列,以确保运行速度最快。
将if-else 组成一系列嵌套的if-else 语句。
例如如下代码:
if (vlaue === 0) { return return0; } else if (value === 1) { return return1; } else if (value === 2) { return return2; } else if (value === 3) { return return3; } else if (value === 4) { return return4; } else if (value === 5) { return return5; } else if (value === 6) { return return6; } else if (value === 7) { return return7; } else if (value === 8) { return return8; } else if (value === 9) { return return9; } else { return return10; }
以上条件语句最多要判断10次。假设 value 的值在 0 到 10 之间均匀分布,会增加平均运行时间。
优化之后的代码:
if (value < 6) { if (value < 3) { if (vlaue === 0) { return return0; } else if (value === 1) { return return1; } else { return return2; } } else { if (value === 3) { return return3; } else if (value === 4) { return return4; } else { return return5; } } } else { if(value<8){ if (value === 6) { return return6; } else { return return7; } }else{ if (value === 8) { return return8; } else if(value===9) { return return9; }else{ return return10; } } }
优化之后的代码使用 二分法把值域分成一系列的区间,然后逐步缩小范围。代码运行的平均时间大约是前面列子的一半。
原文:https://www.cnblogs.com/hq2020/p/14320669.html