可能重复:
If vs. Switch Speed
我将使用c ++作为例子,但我提出的问题不是针对特定语言。我的意思是一般的。哪一个更适合性能?这不是关于编程风格的问题。
当然,在某些情况下,switch语句可能比if语句更容易使用。但如果你想要MAXIMUM表现。就像有数千行代码和10多个switch语句可以用if语句替换,哪一个会导致更好的性能呢?
示例:
if(x == 6){
do this
}
if(x == 67){
do this * 2
}
if(x == 9000){
do this * 3
}
VS
//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,无论你选择什么语言来回答我的问题。
答案 0 :(得分:4)
切换可以(取决于实现)使用跳转表(在c和c ++中),因此在某些条件下它可能更高性能。一般来说,它表明你的意图更清晰,所以编译器可以假装它很聪明。
考虑到您示例中的if
甚至不使用else if
链,它会使switch
更快(因为没有评估所有条件)可能会更改代码的含义(如果您的dothises修改x
)。
答案 1 :(得分:1)
嗯,如上所述:If vs. Switch Speed和此处:Advantage of switch over if-else statement
因此,在某些情况下,由于编译器能够优化一点,实际上切换比许多链式if-else语句更快。
答案 2 :(得分:1)
通常,如果您有一个非常具体的值/操作列表,则可以这样做。由于能够根据已知的编译时间值创建跳转表,因此在大多数情况下切换可能会更快一些。但是,在某些特定情况下,您可以使用switch语句来专门提高性能,例如Duff's Device。