可能重复: 中频与开关速度
我将以c++为例,但我提出的问题并不是针对特定的语言。我是说总的来说。哪一种表现更好?这不是一个关于编程风格的问题。
当然,在某些情况下,开关语句可能比if语句更容易使用。但如果你想要最大限度的表现。比如,如果有数千行代码和超过10个可以被if语句替换的switch语句,那么哪个语句会带来更好的性能?
示例:
if(x == 6){
do this
}
if(x == 67){
do this * 2
}
if(x == 9000){
do this * 3
}对
//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,无论您选择哪种语言来回答我的问题。
发布于 2011-11-30 15:26:33
开关可能(取决于实现)使用跳转表(在c和c++中),因此在某些条件下,它可能具有更高的性能。通常,它会更清楚地说明您的意图,这样编译器就可以假装它很聪明。
考虑到您的示例中的if甚至没有使用else if链,它使switch更快(因为没有评估所有条件),并且还可能更改代码的含义(以防您修改x)。
发布于 2011-11-30 15:28:45
好吧,就像这里说的:中频与开关速度和切换if-else语句的优点
因此,实际上,在某些情况下,由于编译器能够优化一些,所以开关比很多链式if-else语句都要快。
发布于 2011-11-30 15:28:52
使用C++,开关语句比多个if语句执行速度更快。这是因为编译器能够优化开关语句,但是对于多个if,代码必须按照程序员设置的顺序处理每个if语句。使用switch语句,它不依赖于前面的情况,因此编译器能够以一种使其更快执行的方式重新排序。
https://stackoverflow.com/questions/8328321
复制相似问题