哪个通常会有更好的运行时间,多个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;
...
答案 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方法更快,因为在一次测试成功后,它将跳过评估以下条件。
但是,如果条件相互排斥,则这两种形式仅相同。如果你只是盲目地将一个表单转换为另一个表单,你将引入错误。确保你的逻辑正确。