大量 if 语句和 switch 相比有性能差距吗?
多数情况下 swich 下面的 case 只需要一行代码,但是一格式化就极丑,还不如堆叠 if 语句来的优雅,这两者有性能差距吗?
大部分场景怎么方便怎么来,两者性能差距不大的。
不过如果非要扣性能的话,switch 语句可能会影响到分支预测,比如 switch 90% 的情况是第一个 case,写成下面这样性能会有小提升:
enum Color {
RED, BLUE, BLACK, GREEN
}
// other code ...
if (a === Color.RED) {
//...
} else {
switch (a) {
case Color.BLUE: // ...
case Color.BLACK: // ...
case Color.GREEN: // ...
}
}
大多数情况都走第一个 if 语句,可以减少分支预测发散,CPU 友好