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输出没有影响。如果生成的代码add eax, 1不管前面有多少个 if 都生成,它仍然是同一件事。

唯一的性能损失将是if您使用的语句数量以及生成的程序集 ( jxx) 在您的系统上是否昂贵。但是,我怀疑重复嵌套使用 if 可能会成为应用程序的性能瓶颈。通常,处理数据需要时间和/或获取数据需要时间。

于 2011-01-28T20:39:59.990 回答
1

您不会影响指定代码本身的执行时间,但如果评估您的条件很复杂,或受其他因素影响,那么它可能会延长执行时间。

于 2011-01-28T20:36:20.027 回答
1

代码将像在外面一样快速运行。请记住,评估表达式(在if语句中)不是“免费”的,并且会花费一些时间(如果条件更复杂,则需要更多时间),因此如果您的代码嵌套很深,则需要更多时间才能到达它。

于 2011-01-28T20:39:32.697 回答