2009-09-09 53 views

回答

3

該規範是JVM需要實現而不是如何實現的。不同的平臺和來自IBM和Sun等廠商的不同JVM將使用不同的實現,因此您不能假定任何有關字節大小和處理器週期的內容。如果您真的想要查找更多信息,您可以下載Open JDK源代碼並查看它,但這只是一個實現,您不能假設其他實現具有完全相同的性能特徵。

+0

不會有任何基準可用於Windows機器? – 2009-09-09 00:35:06

+2

在Windows上運行有多個JVM,因此一個簡單的「Windows機器」基準測試是不夠的。這樣的基準只會爲您提供有關該環境中特定JVM的信息。 – 2009-09-09 00:47:31

+0

哪個版本的Java,IBM的,Sun的,Open JDK等沒有比較所有這些的基準。 – Jared 2009-09-09 00:49:28

6

如前所述,您尋找的信息不存在,因爲它不存在。除了另外提到的事實,即不同的JVM可以以不同的方式實現指令(或指令組合),單個JVM也可以以不同的方式實現它。

對於不同的信息組合(對於不同的方式實現指令可能更有效(取決於它們如何與其他指令一起使用)以及不同的執行場合。由於JVM總是控制程序的執行,它可以(並確實)監視程序的行爲,並決定重新優化經常運行的代碼(或者代碼滿足某些其他標準)。例如,這可能會導致您的指令在執行一個函數的前一千次時被轉換成一定數量的機器指令,並且被轉換爲另一個指令執行其餘部分。

這種高級優化能力(以及其他)是爲什麼Java字節代碼的優化最好留給JVM,以及爲什麼在某些情況下,Java程序可能比等效的C或C++程序(C和C++)快得多C++通常只是靜態優化,而Java則是動態優化的)。

+0

一切都很好,除了「顯着更快」。除了紙上,我還沒有看到這種情況。 – 2009-09-09 01:49:45

+0

@Pavel Minaev:你可以看看這個鏈接,http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ – 2009-09-09 11:34:59