複製鏈接
請複製以下鏈接發送給好友

JIT Compiler

鎖定
JIT Compiler(Just-in-time Compiler) 即時翻譯。
中文名
即時編譯
外文名
JIT Compiler
工作原理
把解釋型程序集轉換到原生代碼
工作條件
代碼必須是類型安全

JIT Compiler相關資料

最早的Java建置方案是由解釋器(interpreter),將每個Java指令都轉譯成對等的微處理器指令,並根據轉譯後的指令先後次序依序執行,由於一個Java指令可能被轉譯成十幾或數十幾個對等的微處理器指令,這種模式執行的速度相當緩慢。
針對這個問題,業界首先開發出JIT(just in time)編譯器。當Java執行runtime環境時,每遇到一個新的類(class),類是Java程序中的功能羣組-JIT編譯器在此時就會針對這個類進行編譯(compile)作業。經過編譯後的程序,被優化成相當精簡的二進制,這種程序的執行速度相當快。花費少許的編譯時間來節省稍後相當長的執行時間,JIT這種設計的確增加不少效率,但是它並未達到最頂尖的效能,因為某些極少執行到的Java指令在編譯時所額外花費的時間可能比轉譯器在執行時的時間還長,針對這些指令而言,整體花費的時間並沒有減少。
基於對JIT的經驗,業界發展出動態編譯器(dynamic compiler),動態編譯器僅針對較常被執行的程序碼進行編譯,其餘部分仍使用轉譯程序來執行。也就是説,動態編譯器會研判是否要編譯每個類。動態編譯器擁有兩項利器:一是轉譯器,另一則是JIT,它透過智慧機制針對每個類進行分析,然後決定使用這兩種利器的哪一種來達到最佳化的效果。動態編譯器針對程序的特性或者是讓程序執行幾個循環,再根據結果決定是否編譯這段程序碼。這個決定不見得絕對正確,但從統計數字來看,這個判斷的機制正確的機會相當高。事實上,動態編譯器會根據「歷史資料」做決策,所以程序執行的時間愈長,判斷正確的機率就愈高。以整個結果來看,動態編譯器產生的程序碼執行的速度超越以前的JIT技術,平均速度可提高至50%。

JIT Compiler工作原理

JIT是運行時環境的一部分,它把解釋型語言的可執行文件程序集轉換到原生可執行代碼。
安全策略規定被編譯的代碼必須是類型安全的,否則將拋出一個異常,JIT過程結束。