对于在嵌套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语句末尾的代码的执行时间?
答案 0 :(得分:4)
记住C和C ++被转换为它们的程序集等价物。在大多数情况下,这可能是通过某种形式的比较(例如cmp
)和某种形式的jmp
指令。
因此,从(C)
生成的任何代码仍然是相同的。 if
嵌套与输出无关。如果结果代码是生成add eax, 1
,无论前面有多少ifs,它仍然是相同的。
唯一的性能损失将取决于您使用的if
语句的数量以及结果程序集(jxx
)在您的系统上是否昂贵。但是,我怀疑if的重复嵌套使用可能是您应用程序中的性能瓶颈。通常,需要时间来处理获取数据所需的数据和时间。
答案 1 :(得分:1)
您不会影响指定代码本身的执行时间,但如果评估您的条件很复杂或受其他因素影响,则可能会延长总执行时间。
答案 2 :(得分:1)
代码运行速度与外部代码一样快。 请记住,评估表达式(在 if 语句中)不是“免费”并且需要一些时间(如果条件更复杂,则需要更多时间),因此如果您的代码被深深嵌套,它将会花更多时间到达。