動態編譯

動態編譯是某些程式語言在執行時用來增進效能的方法。 這要求程式語言的編譯器成為執行環境的一部分。 不同於動態編譯,遞增式編譯在程式執行後不會做更進一步的最佳化。

動態編譯是某些程式語言在執行時用來增進效能的方法。儘管這技術源於Self但使用此技術最為人所知的是Java。它可以做一些只在執行時才能得知的最佳化。使用動態編譯的執行環境 一開始幾分鐘執行慢,之後,完成大部分的編譯和再編譯後,會執行快。因為初始效能的延遲,動態編譯不適用於一些情況。在許多實作中,一些可以在編譯時期做的最佳化被延到執行時期才編譯,導致不必要的效能降低。即時編譯是一種動態編譯的形式。
一個非常近似的技術是遞增式編譯。遞增式編譯器用於POP-2、POP-11、一些Lisp的版本,如Maclisp和最少一種版本的ML語言(Poplog ML)。這要求程式語言的編譯器成為執行環境的一部分。結果,可以在任何時候從終端、從檔案、或從執行中程式所建造數據結構中讀取源碼。然後,轉成機器碼區塊或函式(有可能取代之前同名的函式),之後可立即被程式使用。因為執行中對互動開發和測試的速度的要求,編譯後的機器碼所做的最佳化程度不如標準'批次編譯器'。然而,遞增式編譯過的程式跑起來通常比同一個程式的解譯版本還快。遞增式編譯因而提供了編譯和解譯語言優點的混合版。 為了移植性,遞增式編譯通常采兩步驟。第一個步驟會編譯到中間與平台獨立的語言,然後再到機器碼。在這例子,移植只須改變'後端'編譯器。不同於動態編譯,遞增式編譯在程式執行後不會做更進一步的最佳化。

相關詞條

熱門詞條

聯絡我們