关于性能:switch语句或if-else语句哪个更好?

Which is better a switch statement or if-else if-else statement?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
is “else if” faster than “switch() case” ?
What is the relative performance difference of if/else versus switch statement in Java?

我只是想知道是否一个更好(即更有效)。对我来说,似乎和语法不同。


编译器可以为某些类型的switch语句创建跳转表,这比像嵌套的if语句集那样计算每个元素更有效。这取决于开关的类型和您所使用的语言,但是许多C编译器在代码生成过程中都是这样的。

因此,简而言之,一个开关可以更有效,但这取决于您的特定用途。


除非你有很多案子,否则没关系。如果您有很多情况,那么切换就更好了,因为编译器会为这些项目生成一个跳转表,因此查找是在O(1)而不是O(案例)中完成的。我还认为开关比if-else if链更可读。