我在StackOverflow上读到了使用
if(someCondition)
{
someCode();
}
else
{
alternateCode();
}
由于易受分支错误预测的影响,可能效率低下(例如,参见this question)。
switch
- 构造也是如此,例如,
switch (someCondition)
{
case (someCase):
something();
break;
case (otherCase):
someOtherInstructions();
break;
default:
defaultAction();
break;
}
在这方面有什么不同(除了我允许三种可能性的事实)?
答案 0 :(得分:4)
if
语句不是“昂贵的”,条件分支可能是。问题不在于您选择编写的许多不同的高级语句中的哪一个 - {{1 },if
,switch
,for
,等。问题在于现代计算机能够很好地执行无条件指令路径,但是当存在决策点时,它们可能会变慢。由于在没有决策点(即,条件分支)的情况下你无法做任何有趣的事情,你也可以忽略高级语言构造的选择。