2010-06-12 53 views
4

Q.1。什麼免費的編譯器生成最優化的Java字節碼?Java字節碼編譯器基準測試

Q.2。什麼免費虛擬機最快(在64位多核CPU上)執行Java字節碼?

Q.3。其他什麼(當前活動)編譯器項目在此列表中:

Q.4。編譯器可以做什麼性能改進,JIT不能(或不)?

Q.5。最近的一些基準,比較或槍戰(Q1或Q2)在哪裏?

謝謝!

回答

6

Q.1。什麼免費的編譯器生成最快的可執行Java字節碼?

問題沒有意義。字節碼不被執行。編譯後的字節碼在使用良好的JIT時不會影響生成的機器碼的效率。

Q.2。什麼免費虛擬機最快(在64位多核CPU上)執行Java字節碼?

這是一個更好的問題。我相信這是JRockit

Q.3。其他什麼(當前活動)編譯器項目在此列表中:

我相信你錯過了JRockit。但是對於更完整的列表,我會看看Wikipedia: List of Java Virtual Machines。看他們是否積極應該是一件容易的事。

Q.4。編譯器可以做什麼性能改進,JIT不能(或不)?

從技術上講,我想沒有。在優化時,字節碼編譯基本上是錯誤的地方。

Q.5。最近的一些基準,比較或槍戰(Q1或Q2)在哪裏?

谷歌是你的朋友在這裏。這是兩個:

不幸的是那些不涉及許多虛擬機。

+0

謝謝!回覆:編譯問題有些編譯器仍然沒有執行一些優化(比如將實例變量初始化爲「false」,「null」或「0」)。 Sun的編譯器(和JIT,我相信)爲這些冗餘分配創建和執行字節碼。我正在尋找比Sun,呃,Oracle更「聰明」的編譯器。 – 2010-06-12 07:34:42

+0

JRockit是免費的嗎?我認爲在製作時有附加的字符串。 – 2010-06-12 07:42:50

+0

@Thorbjørn:http://www.oracle.com/technology/software/products/jrockit/faq.html - 沒有免費製作(我認爲),但至少FAQ中很少有直截了當的答案。 – 2010-06-12 08:02:36

0

目前唯一可行的javac替代品是Eclipse編譯器。

看看它。問題是你發現效率低下,如果真的很重要。

1

Q.4。編譯器可以做什麼性能改進,JIT不能(或不能)?

JIT編譯器可以執行全局優化。字節碼編譯器無法執行此操作,因爲它無法看到在程序運行期間加載的所有庫。

JIT編譯器可以根據當前程序執行的觀察行爲執行分支優化。字節碼編譯器不能這樣做,因爲在程序開始運行時編譯器已經不在圖片中。

+0

真的是在尋找其他方法。例如,JIT是否會將多餘的實例變量賦值爲'null'? – 2010-06-12 17:36:03

+0

@Dave Jarvis - 這當然是JIT編譯器*可以做的優化。它是否做*它只能在個案的基礎上回答。 – 2010-06-12 23:27:46