【发布时间】:2017-11-10 04:57:56
【问题描述】:
如果我必须检查两个(或更多)条件之一来执行循环内的其余范围,例如,这些代码中的哪一个是最好的?
while(condition){
if(some_condition_1 || some_condition_2){
continue;
}
// ... do stuff
}
如果我们知道 some_condition_1 比 some_condition_2 更常见,那么像下面这样分离条件是否有助于优化代码?
while(condition){
if(some_condition_1){
continue;
}
if(some_condition_2){
continue;
}
// do stuff
}
由于如果 some_condition_1 为真,则在第二种情况下不必检查 some_condition_2
【问题讨论】:
-
对于逻辑 AND 和 OR 运算符,C++ 使用short-circuit evaluation。
-
写出可读和明确的代码,让编译器完成它的工作,它通常比你做得更好
-
Since that if some_condition_1 is true, it won't have to check for some_condition_2 in the second case这两种情况都是如此。 -
还有一个一般提示:不要在编写程序的早期担心优化问题。专注于制作简单、可读、可维护的代码。这样可行。然后,如果需要特定性能、度量、基准和配置文件以找到瓶颈,并采取最差的一个并优化它(记住记录和评论你在做什么以及为什么)。然后根据需要进行迭代以满足要求。并确保程序在每次迭代之间通过所有测试。
-
抱歉我之前的误导性评论。它不是编译器优化;这是标准规定的。
标签: c++ optimization