【发布时间】:2013-05-29 06:29:42
【问题描述】:
我在 StackOverflow 上看到使用
if(someCondition)
{
someCode();
}
else
{
alternateCode();
}
可能由于容易发生分支错误预测而效率低下(例如,请参阅this question)。
switch-construct 也是如此,例如,
switch (someCondition)
{
case (someCase):
something();
break;
case (otherCase):
someOtherInstructions();
break;
default:
defaultAction();
break;
}
在这方面有什么不同(除了我已经考虑了三种可能性)?
【问题讨论】:
-
这是一个非常罕见的“昂贵”定义!这有点像说 0.0001 美元很贵。
-
@Gabe:一如既往,这取决于应用程序。如果您需要花费 0.0001 美元数十亿次,这确实很重要(尽管我同意这几乎不是成本的主要部分)。
-
我更喜欢 case 语句,因为它们更容易阅读并减少程序员出现逻辑错误的机会。不知道实际执行的效率是否有差异。
-
相关(可能是 Java 特定的):stackoverflow.com/questions/2086529/…
-
相关(可能是 C++ 特定):stackoverflow.com/questions/97987/…
标签: performance optimization language-agnostic compiler-optimization branch-prediction