短路是否会使程序的执行速度更快,并且分析将哪个语句放在条件语句中的第一位是否值得? [关闭]

2023-12-24

例如(假设我们正在谈论 C++,如果这有区别的话), 在 && 运算符中,如果我知道一个语句更频繁地得到 0/有更高的机会,那么我应该将另一个语句放在左侧,另一个语句放在右侧吗?

|| 同样如此如果我知道一个语句会更频繁地产生 1/有更高的机会,那么我应该将另一个语句放在左侧,另一个语句放在右侧吗?

现在,执行所有这些操作会导致花费大量时间分析程序,但如果这确实加快了程序的执行时间,那么是否值得这样做,嵌入式/实时系统程序员是否会考虑这样做以加快其应用程序的速度如果需要的话?


这取决于。 如果语句很简单:

if(y == 4 || x == 2)

并假设 x == 2 的频率要高得多,这样我们就可以通过如下编写来短路执行:

if(x == 2 || y == 4)

但你看我们不会从中获得太多好处,因为语句非常简单,在这个级别优化代码可能不太值得。

现在考虑一个例子:

if(y == an_expensive_function() || x == 2)

这里假设 an_expense_function() 是非常昂贵的操作,假设它的复杂性是指数级的,那么这样的语句绝对是有意义的:

if(x == 2 || y == an_expensive_function())

来执行短路。

嵌入式和应用程序开发人员或任何开发人员一开始可能不会考虑以如此细的粒度进行优化,如果这不能给他们带来太多好处。如果事情进展顺利,他们甚至可能不会考虑这一点。 因此,作为开发人员,我们需要检查一下,在这样的级别上分析和优化代码需要花费多少时间以及我们从中获得多少好处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

短路是否会使程序的执行速度更快,并且分析将哪个语句放在条件语句中的第一位是否值得? [关闭] 的相关文章

随机推荐