小型 switch 语句与小型 if 链?

Small switch statement vs small if chain?

在性能方面哪个被认为更高效?:

一个小小的switch语句由3下cases/below3个case组成? 要么 一个由 under 3 conditions/below 3 个条件组成的小型 if 链?

例如:

int x = 1;
switch (x) {
    case 1:
        //....do something
    case 2:
        //....do something
    case 3:
        //....do something
}

int x = 1:
if (x == 1) {
    //....do something
}
else if (x == 2) {
    //....do something
}
else if (x == 3) {
    //....do something
}

两者是否同样有效?还是一个人通过速度支配另一个人?

理论上,switch 语句通常比 if/else 梯形图更快,因为 switch 语句在远程可能时编译为跳转表。我的理解是现代优化器可以为 if-then-else 阶梯做同样的事情,所以在实践中它不会更快。

在最坏的情况下,switch语句不会慢,所以如果有疑问,就写switch语句。此外,它更容易阅读,这几乎总是值得的。