編譯器

關於使用JIT編譯的執行環境之特徵,下列何者正確?

  1. A在執行程式之前,先全部翻譯成機器碼再發布
  2. B在執行中將經常使用的部分轉為機器碼,且能利用執行期的資訊
  3. C完全不使用機器碼,永遠逐條指令地解釋位元組碼
查看答案與解析

正確答案:B. 在執行中將經常使用的部分轉為機器碼,且能利用執行期的資訊

在JIT編譯中,一開始是邊解釋位元組碼邊執行,一旦找到被反覆執行的部分(熱點,hotspot),就在執行中把那裡編譯成機器碼。可以利用實際通過的分支與傳入的型別等執行期資訊,進行事前編譯難以做到的大膽最佳化。若假設落空,也具備退回解釋執行的機制。事先全部翻譯的是事前(AOT)編譯,只持續解釋的則是純粹的直譯器。

  • A. 在執行前全部翻譯的是事前(AOT)編譯。
  • B. 正確。在執行中轉為機器碼,且能利用執行期的資訊。
  • C. 只持續解釋的是純粹的直譯器。
練習這個領域 前往領域頁面

編譯器的其他題目

  1. 關於LLVM的基本架構,下列何者正確?
  2. 在指定編譯器最佳化等級的選項中,不進行最佳化的設定(-O0等)經常用於下列哪種情況?
  3. 關於使用剖析資料的最佳化(PGO)的說明,下列何者正確?
  4. 下列何者最適合作為連結時最佳化(LTO)所能實現的最佳化?
  5. 在C語言中,有號整數的溢位是未定義行為。在此前提下,對上方函式進行最佳化的編譯器可能產生的程式碼,下列何者正確?

這個領域的比較