Switch statement vs if statement, which is better for performance?
Possible Duplicate:
If vs. Switch Speed
我将用C++作为一个例子,但是我问的问题不是针对一种特定的语言。我是说一般情况下。哪一个性能更好?这不是关于编程风格的问题。
当然,在某些情况下,switch语句可能比if语句更容易使用。但如果你想要最大的性能。例如,如果有数千行代码和超过10个可以用if语句替换的switch语句,哪一个会导致更好的性能?
例子:
1 2 3 4 5 6 7 8 9 10 11 | if(x == 6){ do this } if(x == 67){ do this * 2 } if(x == 9000){ do this * 3 } |
VS
1 2 3 4 5 6 7 8 9 10 11 | //Please forgive me if the syntax for the switch statement is wrong, I haven't use one in any programming language for a long time Switch(x){ case 6: do this case 67: do this * 2 case 9000: do this * 3 } |
那么,这在性能上有什么不同呢?当你回答时,确保你的答案包括你所指的编程语言。如果在Java中,你说的是Java而不是C++,JavaScript,你选择回答我的问题的语言。
交换机(取决于实现)使用跳转表(在C和C++中),因此在某些条件下它可能更具性能。通常,它会更清楚地说明您的意图,以便编译器可以假装它是智能的。
考虑到您的示例中的
根据这个基准,switch语句更快。
http://jspef.com/switch-vs-if3
通常,如果您有一个非常具体的值/操作列表,那么它们都可以。在大多数情况下,由于能够从已知的编译时值创建跳转表,切换可能更快一些。但是,在某些特定的情况下,您可以使用switch语句专门提高性能,例如duff的设备。
使用C++,开关语句比多个if语句执行速度更快。这是因为编译器能够优化switch语句,但是如果有多个if,代码必须按照程序员设置的顺序处理每个if语句。对于switch语句,它不依赖于早期的情况,因此编译器能够重新排序,从而加快执行速度。
好吧,如这里所述:if与switch speed,这里:switch over if else语句的优点
因此,实际上,由于编译器能够进行一点优化,因此在Dertain环境下,switch比大量链接的if-else语句更快。