if文のすべてのブロックが返ってきたらif/else ifを持つ方が良いでしょうか、あるいはifの連鎖を持つ方が良いでしょうか?Cでは、より高速です:返り値であれば、そうでなければ返値で?
A:
if (condition1) {
code1;
return a;
}
if (condition2) {
code2;
return b;
}
//etc...
B:最速の場合、具体的には
if (condition1) {
code1;
return a;
}
else if (condition2) {
code2;
return b;
}
//etc...
私は前者が高速ですが、最初の条件が満たされない限りブロック2が実行されないことが明確になっているので、2番と一緒に行く方が良いかもしれません。 – mpen
いいえ、CはCPUレベルで何が起こるかを指示しません。 JMPステートメントを持たないCPUアーキテクチャーでは、ステートメントを実行しても結果を破棄するためにフラグを使用しています。それはスピードが同じであることを意味します。私の主張は、Cコードがどのようなものになるのかを想定することはできません。 – paxdiablo
"architecture ...フラグを使用して文を実行しますが、結果を破棄します。"たとえばARMには、条件フラグが設定されている場合に実行される条件付き命令があり、条件フラグがセットされていない場合にはnopとして動作します。ジャンプが多くのオプションよりも遅くなる場合は、コンパイラによって発行されます。 –