JIT Compiler

JIT Compiler

JIT Compiler(Just-in-time 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是運行時環境的一部分,它把解釋型語言的執行檔程式集轉換到原生可執行代碼。
安全策略規定被編譯的代碼必須是類型安全的,否則將拋出一個異常,JIT過程結束。

相關詞條

熱門詞條

聯絡我們