我剛纔讀的Android有一個450%的性能提升,因爲它增加了一個JIT編譯器,我知道什麼是JIT,但我真的不明白爲什麼它比正常的編譯代碼更快?或者與Android平臺的舊方法(Java像運行編譯的字節碼)有什麼不同。JIT編譯器如何幫助應用程序的性能?
謝謝!
編輯:這是巨大的有趣,謝謝!我希望我能選擇的每一個答案是正確的:)
我剛纔讀的Android有一個450%的性能提升,因爲它增加了一個JIT編譯器,我知道什麼是JIT,但我真的不明白爲什麼它比正常的編譯代碼更快?或者與Android平臺的舊方法(Java像運行編譯的字節碼)有什麼不同。JIT編譯器如何幫助應用程序的性能?
謝謝!
編輯:這是巨大的有趣,謝謝!我希望我能選擇的每一個答案是正確的:)
首先聲明,我不熟悉Android。無論如何...
有兩個我熟悉的JIT編譯應用程序。一種是將字節碼轉換爲實際的機器指令。第二個是Superoptimisation。
JIT編譯的字節碼速度的東西,因爲字節碼只interpeted,而不是每次執行時一次。這可能是你看到的那種優化。
JIT superoptimsation,其搜索的實現程序邏輯指令真正的最佳設置,是一個小更深奧。這可能不是你說的話,儘管我已經讀過速度提高100% - 200%的報道。
JIT編譯器知道它的系統,它可以使用knownledge產生高效率的代碼相比,字節碼,並且傳言它可以超過預編譯的程序。
這就是爲什麼它可以去比Java的傳統系統,其中代碼只運行字節碼,其使用的Android更快了。
VM需要將編譯後的字節碼轉換爲機器指令才能運行。以前這是通過使用解釋器完成的,該解釋器適用於僅調用一次但對重複調用的函數不太理想的代碼。
當VM的JIT版本替換了最初的解釋器版本時,Java VM看到了類似的加速。
爲了澄清,Dalvik,Android上的「類Java」虛擬機是一個字節碼解釋器。在Android 2.2中,Google爲機器碼編譯器創建了一個字節碼。對於執行本地編譯的開銷低於執行開銷的代碼,帶有JIT的Dalvik應該會顯着提高性能。 – 2010-05-13 17:38:25
除了將java代碼編譯爲本機代碼(也可以通過編譯器完成)之外,JIT還會進行優化,只能在運行時進行優化。
一個JIT可以隨時監視應用程序的行爲,並優化這些使用模式,真正發揮作用,甚至在其他分支的代碼的執行路徑爲代價的,如果這些不常用。
你從哪裏閱讀過由於JIT而使性能提高了450%? – Nate 2010-05-13 16:48:33
它遍佈全球:http://www.providingnews.com/android-2-2-450-faster.html – igorgue 2010-05-13 17:04:46
JIT編譯器不會比編譯代碼快。它只比解釋代碼快。由於JIT編譯器不能像靜態編譯器那樣花費盡可能多的時間進行優化,所以代碼不像普通編譯代碼那麼快。此外,每次運行代碼時都需要編譯時間。 – PauliL 2010-05-25 15:29:15