4

问题 1。什么免费的编译器可以生成最优化的 Java 字节码?

问题 2。哪个免费虚拟机执行 Java 字节码最快(在 64 位多核 CPU 上)?

问题 3。此列表中缺少哪些其他(当前活动的)编译器项目:

问题 4。编译器可以做哪些 JIT 不能(或不能)做的性能改进?

问题 5。最近的一些基准、比较或枪战(第一季度或第二季度)在哪里?

谢谢!

4

3 回答 3

5

问题 1。什么免费编译器可以生成最快的可执行 Java 字节码?

问题真的没有意义。不执行字节码。当使用良好的 JIT 时,编译的字节码不会有足够的差异来影响生成的机器代码的效率。

问题 2。哪个免费虚拟机执行 Java 字节码最快(在 64 位多核 CPU 上)?

这是一个更好的问题。我相信是JRockit

问题 3。此列表中缺少哪些其他(当前活动的)编译器项目:

我相信你错过了 JRockit。但要获得更完整的列表,我会查看Wikipedia: List of Java Virtual Machines。查看他们是否活跃应该是一件容易的事。

问题 4。编译器可以做哪些 JIT 不能(或不能)做的性能改进?

我想在技术上没有。在优化方面,字节码编译基本上是错误的地方。

问题 5。最近的一些基准、比较或枪战(第一季度或第二季度)在哪里?

谷歌是你的朋友。这是两个:

不幸的是,这些并没有涵盖那么多虚拟机。

于 2010-06-12T07:19:30.983 回答
2

Q.4. What performance improvements can compilers do that JITs cannot (or do not)?

A JIT compiler can perform global optimizations. A bytecode compiler cannot do this because it cannot see all of the libraries that are loaded during the running of the program.

A JIT compiler can perform branch optimizations based on the observed behavior of the current program execution. A bytecode compiler cannot do this because by the time the program starts running the compiler is already out of the picture.

于 2010-06-12T09:52:24.340 回答
0

目前唯一可行的 javac 替代方案是 Eclipse 编译器。

Have a look at it. Question is what you have found to be inefficient and if it really matters.

于 2010-06-12T07:43:56.037 回答