我在 StackOverflow 上读到,使用
if(someCondition)
{
someCode();
}
else
{
alternateCode();
}
由于容易发生分支预测错误,效率可能很低(例如,请参见 this question)。
switch
也是如此-构造,例如,switch (someCondition)
{
case (someCase):
something();
break;
case (otherCase):
someOtherInstructions();
break;
default:
defaultAction();
break;
}
在这方面有什么不同(除了我允许三种可能性之外)?
最佳答案
if
语句并不“昂贵”,条件分支可能是。 问题不在于您选择编写许多不同的高级语句中的哪一个 - if
, switch
, for
, while
等等。问题是现代计算机在执行无条件指令路径时运行良好,但是当存在决策点时,它们可能会变慢。由于没有决策点(即条件分支),您无法在计算中做任何有趣的事情,因此您不妨忽略高级语言结构的选择。
关于performance - switch 和 if 一样糟糕吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16891093/