【发布时间】:2014-01-16 13:57:50
【问题描述】:
我正在阅读一份关于 Java 的 just-in-time compiler (JIT) 优化技术的文档。其中之一是“循环反转”。文件说:
您将常规的
while循环替换为do-while循环。和do-while循环在if子句中设置。这种替换减少了两次跳跃。
循环反转如何工作以及它如何优化我们的代码路径?
注意: 如果有人能用 Java 代码的例子解释一下 JIT 如何将其优化为本机代码以及为什么它在现代处理器中是最佳的,那就太好了。
【问题讨论】:
-
这不是你会对你的源代码做的事情。它发生在本机代码级别。
-
@MarkoTopolnik 我知道。但我想知道 JIT 在本机代码级别如何做到这一点。谢谢。
-
哦,酷,有一个关于这个的维基百科页面有很多例子en.wikipedia.org/wiki/Loop_inversion。 C 示例在 Java 中同样有效。
-
前段时间受SO上的一个问题启发,我对这件事做了一个简短的研究,也许结果会对你有所帮助:stackoverflow.com/questions/16205843/java-loop-efficiency/…
-
这和循环条件通常放在最后的地方是一样的吗(不管执行的跳转是否会更少),只是为了减少跳转指令(1 vs 2 per迭代)?
标签: java jvm jit machine-instruction