java中哪一个更快?
a) for(int i = 100000; i > 0; i--) {}
b) for(int i = 1; i < 100001; i++) {}
Run Code Online (Sandbox Code Playgroud)
我一直在寻找答案的解释,这是选项a,任何人?任何帮助表示赞赏
有些情况下,Java中的反向循环可能稍微快一些.这是一个显示示例的基准.通常,差异通过递增/递减指令或循环终止比较指令中的实现细节来解释,两者都在底层处理器体系结构的上下文中.在更复杂的示例中,反转循环可以帮助消除依赖关系,从而启用其他优化,或者可以改善内存局部性和缓存,甚至垃圾收集行为.
对于所有情况,人们不能假设任何一种循环总是更快 - 对于具体情况,需要一个基准来确定哪一个在给定平台上表现更好.我甚至没有考虑JIT编译器与此有什么关系.
无论如何,这种微优化可以使代码更难以阅读,而不会提供明显的性能提升.因此,除非严格必要,否则最好避免使用它们,记住 - "过早优化是所有邪恶的根源".
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |