performance - switch 和 if 一样糟糕吗?

标签 performance optimization language-agnostic compiler-optimization branch-prediction

我在 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/

相关文章:

r - as.matrix 在距离对象上非常慢;如何让它更快?

windows - 在 Xperf 中捕获调用堆栈和事件

mysql - 模板化 MySQL 的 my.cnf 以在 Puppet 中设置

algorithm - 哪种排序算法可以更快地进行接近/近似排序?

java - 在 Java 中处理图像时提高性能

algorithm - 向量化帕累托前沿算法

mysql - 如何在派生表的 where 条件中使用先前联接中的字段?

windows - 在控制面板 -> 声音中添加我自己的应用程序事件

language-agnostic - 如何处理 .NET 中的构造函数过度注入(inject)

objective-c - iOS模拟器键盘输入延迟