3

Lines of code - (C)ネストされた if 内で実行されている " " にパフォーマンスへの影響はありますか?

if (condition_1)
{
   /* Lines of code */ - (A)

   if (condition_2)
   {
      /* Lines of code */ - (B)

      if (condition_n)
      {
          /* Lines of code */ - (C)
      }
   }
}

つまり、最後の if ステートメントの最後にあるコードの実行時間に影響を与えることなく、任意の数の if ステートメントをネストできるということですか?

4

3 に答える 3

5

C と C++ は、同等のアセンブリに変換されることに注意してください。cmpほとんどの場合、これは何らかの形式の比較 (例: ) および何らかの形式のjmp命令によるものと思われます。

そのため、どのコードから生成され(C)たものでも同じです。ifネスティングは出力には影響しません。その前にいくつの if があったとしても、結果のコードが生成される場合add eax, 1、それは同じことになります。

唯一のパフォーマンスの低下は、使用するステートメントの数と、結果のアセンブリ ( ) がシステム上で高コストにifなるかどうかです。jxxただし、入れ子になった if を繰り返し使用することが、アプリケーションのパフォーマンスのボトルネックになるとは思えません。通常、データを処理するのに必要な時間またはデータを取得するのに必要な時間です。

于 2011-01-28T20:39:59.990 に答える
1

指定されたコード自体の実行時間には影響しませんが、条件の評価が複雑な場合、または他の要因の影響を受ける場合は、合計実行時間が長くなる可能性があります。

于 2011-01-28T20:36:20.027 に答える
1

コードは外にあるかのように高速に実行されます。( ifステートメント内の) 式の評価は「無料」ではなく、少し時間がかかる (条件がより複雑な場合はさらに時間がかかる)ことを覚えておいてください

于 2011-01-28T20:39:32.697 に答える