Per*_*-lk 2 c++ optimization if-statement
如果某个函数的行为取决于一系列条件,则可以使用不同的if-return块或一系列if-else块来计算它.示例计算模式:
void f(params) // isolated if-blocks
{
if (cond1) {
// computational steps
return;
}
if (cond2) {
// computational steps
return;
}
// computational steps of last case
}
void f() // unique if-else block
{
if (cond1) {
// computation
} else if (cond2) {
// computation
} else { // last condition
// computation
}
}
Run Code Online (Sandbox Code Playgroud)
我会说第一个总是更具可读性,但我不知道第二个是否最好来自设计(易于维护/错误)或性能(分支预测/编译器优化)的观点.
这两种方法的优点和缺点是什么?我没有考虑过其他什么?
如果"计算步骤"适当地长(并且有时这根本不需要很长),那么在视觉上很难看出有三个独立的块,每个块都有一个早期的返回.有人可能错误地推断所有三个块都可以在同一个函数调用中运行.
第二版明确指出只能执行一条路径,我相信它的读取和维护要清晰得多.