【发布时间】:2013-10-08 13:42:30
【问题描述】:
相同版本的代码优化是否有任何差异: Oracle Java 编译器 Apache Java 编译器 IBM Java 编译器 OpenJDK Java 编译器。 如果有什么代码会展示不同的优化?还是他们使用相同的编译器?如果没有已知的优化差异,那么我在哪里可以找到有关如何测试编译器以进行不同优化的资源?
【问题讨论】:
-
顺便说一句 - 据我所知,主要优化实际上是由 JIT 编译器完成的,而不是编译器本身
-
@EelLee JIT 编译器是 Java 中唯一真正的编译器。我不知道从源代码到字节码的转换称为“编译”的任何其他语言。
-
@MarkoTopolnik 似乎被广泛使用。我不知道您为什么认为“编译”仅适用于最终结果是本机代码的情况。
-
我非常同意 Eel Lee 的说法。 Hotspot 是一个优秀的 JIT 编译器,它可以使用运行时信息来做出更好的优化决策。此外,它甚至可以在认为当前安全的情况下执行非法操作(例如删除同步或内联非最终方法),并在需要原始表单时退出这些优化。在这种情况下,我无法想象编译器编写者有太多理由专注于字节码的性能优化——毕竟它甚至可能会损害性能(如果在运行时更难优化的话)。
-
@MarkoTopolnik - 我认为这更像是语义问题,但是我自己还是个初学者,所以我认为没有必要争论 :)
标签: java optimization compiler-construction bytecode