大量 if 语句和 switch 相比有性能差距吗?

多数情况下 swich 下面的 case 只需要一行代码,但是一格式化就极丑,还不如堆叠 if 语句来的优雅,这两者有性能差距吗?

programming
203 views
Comments
登录后评论
Sign In
·

编译器足够聪明这两个一样的

·

大部分场景怎么方便怎么来,两者性能差距不大的。

不过如果非要扣性能的话,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 友好

·

考虑这个,不如考虑怎么优化下班时间比较好 sweat_smile

·

·

要看语言具体的运行方式是怎样的,如果解释执行的话没有什么差别