由于在當前主機操作系統上加上了Java虛擬機層,Java字節碼執行速度目前要比本地機器慢10到20倍。速度問題可能是影響Java推廣的唯一原因。影響Java字節碼執行速度的原因很多:
(1)首先,驗證過程要花費時間,讀
入的類要在運行時驗證,而傳統程序在程序編譯時即完成驗證工作。
(2)其次,Java指令都是字節碼。由于大多數操作對象超過一個字節長,因此必須讀多個字節碼來取得操作符和不同操作數。
(3)再次,由于Java完全采用堆棧機理,運算操作都在堆棧上執行。而傳統編譯器在編譯時進行多種優化工作,很多計算操作可直接在寄存器中完成,大大提高程序執行速度。
(4)最后,在程序執行期間,系統要進行無用內存單元回收工作,在回收過程中,程序將停止執行,這無疑也會影響性能。以上只列出了四條主要的原因,還有其他一些因素綜合作用影響著Java虛擬機的性能。
目前,針對Java虛擬機程序速度慢的問題,幾家主要的公司(如Microsoft,Borland等)提出了及時編譯技術(Just-In-Time)JIT。具體說,就是JIT編譯器在程序開始執行前把所有字節碼翻譯成本地機器碼,然后再將翻譯后的機器碼放在CPU上運行。這樣,我們就用字節碼編譯器代替了原來的解釋器,它對用戶透明而又提高了執行速度。據稱,Borland公司工發的JITJavaAppAccelerator能使應用程序運行速度比解釋執行快5到10倍。也許將來JIT編譯器會加到Java虛擬機中,從而解決所有性能問題。
posted on 2005-10-28 19:52
Sung 閱讀(312)
評論(0) 編輯 收藏 所屬分類:
Java