我记得多年前,听说循环递减而不是递增更有效,特别是在编程微处理器时。 这是真的吗?如果是这样,原因是什么?更好地减少循环?
更好地减少循环?
回答
从蝙蝠身上发生的一件事是递减循环的结束条件可能会更快。如果循环到certian值,则每次迭代都需要与该值进行比较。但是,如果循环为零,那么大多数处理器上的递减会自动设置零标志,如果减量值为零,则不需要额外的比较操作。
我认识的小土豆,但是在一个紧密的内部循环中,它可能很重要。
这确实是答案 –
如果你可以张贴一些时间分析显示这种效果,这个问题可能值得重新打开。 – Gabe
@加贝 - 一个奇怪的请求。一般来说,我实际上赞同你对这种微型优化的怀疑。我绝对不会混淆我的HLL代码来做到这一点,除非我有数字显示它帮助了很多。但是,(在像M68K或Ix86这样的处理器上)这需要额外的指令这一事实是毋庸置疑的。我不认为我真的有足够的空闲时间来确定地向您证明,执行任何指令都比执行指令更快。 –
在c#中,效率没有任何区别。减少循环的唯一原因是如果循环访问集合并随时删除项目。
不知道递减,但我知道使用++我而不是i ++更具有高性能。
网上有很多文章为什么会这样,但归结到这一点:使用++我让它自动地被声明为第一次,并且使用i ++不会那样做。 (在C#至少)
同样,不知道递减时更好的性能,只是想我会扔东西在那里看到你是如何询问性能:)
你只使用递减,因为在我所知道的某些情况下它更容易。
肯定这不是真的 –
- 1. 减少Foreach循环?
- 2. 减少For循环?
- 3. 地图,减少,过滤适用于循环和while循环
- 4. 在Python中减少循环
- 5. 在Scala中减少循环?
- 6. 有没有更好的循环可以编写来减少数据库查询?
- 7. 地图减少地图减少
- 8. 减少时间久for循环Python中
- 9. 如何减少Hartley变换的循环?
- 10. 减少循环执行时间
- 11. JavaScript减少循环不工作
- 12. 减少matlab循环的运行时间
- 13. 斯卡拉向下或减少循环?
- 14. 减少执行时间在循环
- 15. 如何减少这个比较循环
- 16. 减少循环的时间复杂度
- 17. SQLite减少for循环的时间
- 18. 减少环节
- 19. 更改循环组织,减少XML输出
- 20. openmp并行for循环与两个或更多的减少
- 21. 哪个更好?:(减少+ ...)或(应用+ ...)?
- 22. 循环问题更少
- 23. 更好的Java循环?
- 24. JavaScript - 减速循环
- 25. C++ openmp用于循环执行期间的循环最大减少值
- 26. 环复杂度减少
- 27. 连续编程:更好地嵌套循环或捕捉“事件”
- 28. 嵌套的jQuery循环 - 如何才能更好地完成?
- 29. 在我的Java代码中更好地使用for循环
- 30. jQuery循环标签:更好的循环方式?
也许它取决于将'ECX'递减为零的汇编程序指令'LOOP'。但在高级语言中,这不应该产生太大的影响。 – Nobody
C#标签令人困惑:您的问题取决于CPU架构,但C#被编译为IL代码,可根据指令集将其翻译为不同的机器代码指令 –
如果您的实际代码比其他代码快,张贴它并问为什么。否则,这不是一个非常有用的问题。 – Gabe