Performance 多个if块还是单个if/else块?

Performance 多个if块还是单个if/else块?,performance,logic,Performance,Logic,哪一个通常具有更好的运行时间、多个if块或单个if/else块 与: if (statement1) { /* do something */ return result; } else if (statement2) { /* do something */ return result; } else if (statement3) { /* do something */ return result; } 当逻辑语句没有任何关联时,我总是使用

哪一个通常具有更好的运行时间、多个if块或单个if/else块

与:

if (statement1) {
    /* do something */
    return result;
} else if (statement2) {
    /* do something */
    return result;
} else if (statement3) {
    /* do something */
    return result;
}
当逻辑语句没有任何关联时,我总是使用第一种样式,如果逻辑语句有关联,则使用第二种样式

编辑

为了澄清为什么这个想法突然出现在我的脑海中,我正在编程一个基本检查器,并且有一个if块,看起来像这样:

if(n<2) return 0;
if(n==2) return 1;
if(n%2==0) return 0;
...

总是选择“如果”或者“如果…”。。。当您知道只有一个条件要执行时,写入多个if将使编译器检查每个条件,即使满足第一个条件,也会产生性能开销,当您希望基于特定条件检查和执行多个操作时,可以使用多个if。

if/else方法更快,因为在一个测试成功后,它将跳过评估以下条件

然而,只有当条件相互排斥时,这两种形式才是等价的。如果你只是无意识地将一种形式转换成另一种形式,你会引入bug。确保你的逻辑正确

哪一个通常具有更好的运行时间、多个if块或单个if/else块

这在很大程度上是不相关的,因为语义不同

现在,如果目标是比较

if (a) { .. }
else if (b) { .. }
else { .. }


如果没有语句遵循条件语句,则它们是相同的,对于像C这样的语言,编译器可以等效地优化它们。

我认为使用正确的逻辑比性能更重要。考虑到ifs链需要额外的语句来实现与IFELIF链相同的逻辑,这是完全不同的逻辑。场景1,所有3件事都可能发生。场景2,只有一件事可能发生。也就是说,2会表现得更好,因为只有当条件为false时,ELSE才会被执行。这个概念叫做短路。我同意。。。两种不同的逻辑。在第一个代码中,检查所有语句,而在第二组代码中,如果其中任何一个语句为true,它将忽略其余语句。当逻辑语句没有任何关联时,我总是使用第一种样式,如果逻辑语句有关联,则使用第二种样式。答对了。这取决于逻辑,正如我在评论中所说的那样。@pennstatephil我在上面提到过,如果只有一个条件要执行,那么就选择if-else
if (a) { .. }
else if (b) { .. }
else { .. }
if (a) { return }
if (b) { return }
return