关于嵌套if的性能问题

时间:2011-01-28 20:34:10

标签: c++ performance nested-if

对于在嵌套ifs中运行的“Lines of code - (C)”是否有任何性能影响?

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

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

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

这是否意味着您可以嵌套任意数量的if语句而不影响封闭在最后一个if语句末尾的代码的执行时间?

3 个答案:

答案 0 :(得分:4)

记住C和C ++被转换为它们的程序集等价物。在大多数情况下,这可能是通过某种形式的比较(例如cmp)和某种形式的jmp指令。

因此,从(C)生成的任何代码仍然是相同的。 if嵌套与输出无关。如果结果代码是生成add eax, 1,无论前面有多少ifs,它仍然是相同的。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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