多个if块或单个if / else块?

时间:2014-05-15 20:05:27

标签: performance logic

哪个通常会有更好的运行时间,多个if块或一个if/else块?

if (statement1) {
    /* do something */
    return result;
}
if (statement2) {
    /* do something */
    return result;
}
if (statement3) {
    /* do something */
    return result;
}

对战:

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;
...

3 个答案:

答案 0 :(得分:2)

  

哪个通常会有更好的运行时间,多个if块或一个if / else块?

由于语义不同,这在很大程度上无关紧要。

现在,如果目标是比较

的情况
if (a) { .. }
else if (b) { .. }
else { .. }

if (a) { return }
if (b) { return }
return

其中没有语句遵循条件然后它们是相同的并且编译器(在像C这样的语言的情况下)可以等效地优化它们。

答案 1 :(得分:0)

如果... 当你知道只有一个条件要执行时,那么总是去找其他,写多个if会让编译器检查每一个条件即使满足第一个条件会产生性能开销,当你想要检查并根据某些条件执行多个操作时,可以使用多个条件

答案 2 :(得分:0)

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

但是,如果条件相互排斥,则这两种形式仅相同。如果你只是盲目地将一个表单转换为另一个表单,你将引入错误。确保你的逻辑正确。