“嵌套的条件是”还是“如果且如果是,则是多个”哪个更好?

时间:2019-07-25 21:06:26

标签: if-statement optimization

哪个代码段的性能更好?

假设“ a”和“ b”是布尔变量。

第一个代码段

if (a && b) {
    // path 1
} else if (a) {
    // path 2
} else if (b) {
    // path 3
} else {
    // path 4
}

第二个代码段

if (a) {
    if (b) {
        // path 1
    } else {
        // path 2
    }
} else {
    if (b) {
        // path 3
    } else {
        // path 4
    }
}

第二个代码段似乎工作量较小,但我不知道嵌套“如果条件”是否有副作用。

2 个答案:

答案 0 :(得分:0)

在必要之前避免嵌套。具有较深的语法树会增加失败的机会。通常,除非过载,您介绍的这些操作员不会造成性能问题。

答案 1 :(得分:0)

  

哪个代码段的性能更好?

理想地;这两个代码段的性能将是相同的,因为编译器将优化您以哪种形式为正在为其编译的特定计算机最快写入的内容。在这种情况下,哪个更好,哪个更容易阅读和维护。

请注意(如果由于编译器的优化程序而导致性能不相同),则为其编译的特定计算机可能与您使用的计算机完全不同;进行基准测试还可以为您提供同一计算机上其他用法错误的结果(例如,如果分支可以由基准测试中的CPU预测,但在基准基准以外的正常使用情况下无法预测,则基准测试的结果将不具有指示性在Benchamrk之外的表现)。换一种说法; (如果由于编译器的优化程序而导致性能不同)。不能保证对性能进行基准测试可以告诉您有关性能的任何有用信息