关于嵌套 if 的性能问题

use*_*244 3 c++ performance nested-if

Lines of code - (C)在嵌套 ifs 内运行的“ ”有任何性能影响吗?

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

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

      if (condition_n)
      {
          /* Lines of code */ - (C)
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

因此,无论生成什么代码都(C)将是相同的。该if嵌套对输出没有影响。如果生成的代码add eax, 1无论在此之前有多少个if 都要生成,它仍然是相同的。

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