2

ifステートメントについての質問を読みました

どのコードがより速く/同じですか?

if(a == 1)は0を返します。

if(a == 1){return 0; }

この場合、速度またはコンパイラーに本当に違いはありますか?

前もって感謝します。

4

4 に答える 4

8

実行速度に関しては、まったく同じです

C++11 標準では、最初の形式が 2 番目の形式の暗黙的な変形であると定義されています。パラグラフ 6.4/1 によると、実際には:

[...]選択ステートメントのサブステートメントelse(ステートメントの形式の 各サブifステートメント) は、暗黙的にブロック スコープ (3.3) を定義します。selection-statement 内のサブステートメントが単一のステートメントであり、compound-statementではない場合、元のサブステートメントを含む複合ステートメントに書き直されたかのようになります。【

if (x)
    int i;

と同等に書き換えることができます

if (x) {
    int i;
}

したがって、if ステートメントの後、i はスコープ外になります。—<em>例の終了]

余分な中括弧を解析するために必要な追加のコンパイル時間は非常に小さいため、無視しても問題ありません。コードを読みやすくしたり、自分のケースで維持したりしやすい形式を選択してください

于 2013-03-23T14:46:16.253 に答える
5

コンパイル時に中かっこを解析するために必要なごくわずかな余分な時間を除いて、パフォーマンスに違いはありません。

于 2013-03-23T14:46:19.330 に答える
3

実行速度はまったく同じです。コンパイル速度には、ナノ秒程度の差が生じる可能性があります。ただし、すべての実際的な理由と目的から、2 つのステートメントは同一です。

于 2013-03-23T14:46:41.177 に答える
2

両方のステートメントの速度に絶対的な違いはありません。

時期尚早の最適化は悪いことです。そのようなことを心配することに多くの時間を費やさないでください。

于 2013-03-23T14:46:48.760 に答える