JIT:Just In Time AOT:Ahead of Time 含義: 目前,程式主要有兩種運行方式:靜態編譯與動態解釋。 靜態編譯的程式在執行前全部被翻譯為機器碼,通常將這種類型稱為AOT (Ahead of time compiler)即 “提前編譯”;如C、C++。 判斷標準是:程式執行 ...
JIT:Just In Time
AOT:Ahead of Time
含義:
目前,程式主要有兩種運行方式:靜態編譯與動態解釋。
靜態編譯的程式在執行前全部被翻譯為機器碼,通常將這種類型稱為AOT (Ahead of time compiler)即 “提前編譯”;如C、C++。
判斷標準是:程式執行前是否需要編譯。
而解釋執行的則是一句一句邊翻譯邊運行,通常將這種類型稱為JIT(Just-in-time)即“即時編譯”。如JavaScript、Python。
程式運行的方式和具體的語言沒有強制關係,比如Python,既可以JIT,也可以AOT。
Dart中的JIT和AOT:
- Dart在開發過程中使用JIT,因此每次改都不需要再編譯成位元組碼。節省了大量時間。
- 在部署中使用AOT生成高效的ARM代碼以保證高效的性能。
Dart 是少數同時支持 JIT(Just In Time,即時編譯)和 AOT(Ahead of Time,運行前編譯)的語言之一。
JIT 在運行時即時編譯,在開發周期中使用,可以動態下發和執行代碼,開發測試效率高,但運行速度和執行性能則會因為運行時即時編譯受到影響。
總結來講,在開發期使用 JIT 編譯,可以縮短產品的開發周期。Flutter 最受歡迎的功能之一熱重載,正是基於此特 性。
而在發佈期使用 AOT,就不需要像 React Native 那樣在跨平臺 JavaScript 代碼和原生 Android、iOS 代碼之間建立低效的方法調用映射關係。
所以說,Dart 具有運行速 度快、執行性能好的特點。