的Java Virtual Machine Instruction Set頁面提供的助記符如aaload,aastore信息...等
但是沒有這些助記符將佔用被提及也沒有任何信息的CPU週期字節大小或這些助記符的字大小。
任何想法可以找到這些信息?JVM指令集的CPU週期和字節大小
回答
該規範是JVM需要實現而不是如何實現的。不同的平臺和來自IBM和Sun等廠商的不同JVM將使用不同的實現,因此您不能假定任何有關字節大小和處理器週期的內容。如果您真的想要查找更多信息,您可以下載Open JDK源代碼並查看它,但這只是一個實現,您不能假設其他實現具有完全相同的性能特徵。
如前所述,您尋找的信息不存在,因爲它不存在。除了另外提到的事實,即不同的JVM可以以不同的方式實現指令(或指令組合),單個JVM也可以以不同的方式實現它。
對於不同的信息組合(對於不同的方式實現指令可能更有效(取決於它們如何與其他指令一起使用)以及不同的執行場合。由於JVM總是控制程序的執行,它可以(並確實)監視程序的行爲,並決定重新優化經常運行的代碼(或者代碼滿足某些其他標準)。例如,這可能會導致您的指令在執行一個函數的前一千次時被轉換成一定數量的機器指令,並且被轉換爲另一個指令執行其餘部分。
這種高級優化能力(以及其他)是爲什麼Java字節代碼的優化最好留給JVM,以及爲什麼在某些情況下,Java程序可能比等效的C或C++程序(C和C++)快得多C++通常只是靜態優化,而Java則是動態優化的)。
一切都很好,除了「顯着更快」。除了紙上,我還沒有看到這種情況。 – 2009-09-09 01:49:45
@Pavel Minaev:你可以看看這個鏈接,http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ – 2009-09-09 11:34:59
- 1. 是字節碼作爲JVM的指令集處理嗎?
- 2. JVM字節碼跳轉指令
- 3. 相對於最大CPU頻率的CPU/CPU進程/ CPU週期
- 4. 指令週期(PIC18)
- 5. 機器週期中的x86 CPU的彙編指令後
- 6. CPU週期數作爲執行指令數的近似值
- 7. AMD K8 CPU每個週期有多少指令?
- 8. 技術計算:每個週期的CPU指令和每個週期的觸發器是否相同?
- 9. JVM生命週期?
- 10. MIPS指令集的字節操作
- 11. x86_64 ASM - 指令的最大字節數?
- 12. Cassandra緩存大小和JVM堆大小
- 13. JVM生命週期描述
- 14. 在JAR中指定JVM堆大小
- 15. JVM字節碼指令Tload_ <n> vs Tload
- 16. 6502每個指令的週期時間
- 17. 確定JVM堆大小時,CPU內核的數量是多少?
- 18. 獲取CPU週期數?
- 19. 查找eclipse中指令所採用的指令週期數 - Android
- 20. 是JVM允許指令重新排序,周圍的AtomicInteger調用
- 21. 大小字符數組和字符指針的大小的
- 22. 總JVM在Hadoop集羣上運行? Hadoop中的JVM生命週期
- 23. 在unix中會使用「yes」命令浪費大量的cpu週期嗎?
- 24. JVM中的指令數
- 25. CPU指令每秒
- 26. Mips指令單週期數據通路
- 27. PC VS MAR指令執行週期
- 28. 用喬達時間週期顯示「負」時間週期大小
- 29. 節省CPU週期(提高性能)字符數組的複製過程中串
- 30. 一個簡短的聲明,消耗大量的CPU週期
不會有任何基準可用於Windows機器? – 2009-09-09 00:35:06
在Windows上運行有多個JVM,因此一個簡單的「Windows機器」基準測試是不夠的。這樣的基準只會爲您提供有關該環境中特定JVM的信息。 – 2009-09-09 00:47:31
哪個版本的Java,IBM的,Sun的,Open JDK等沒有比較所有這些的基準。 – Jared 2009-09-09 00:49:28