編譯器

在指定編譯器最佳化等級的選項中,不進行最佳化的設定(-O0等)經常用於下列哪種情況?

  1. A要製作作為產品發布、盡可能快的程式時
  2. B在偵錯器中逐行確認動作並尋找錯誤時
  3. C想把程式的大小縮到最小時
查看答案與解析

正確答案:B. 在偵錯器中逐行確認動作並尋找錯誤時

在不進行最佳化的設定下,原始碼的每一行幾乎都依原本的順序對應到機器碼,變數也一直保留在記憶體或暫存器中,因此容易在偵錯器中逐行執行或確認變數的值。一旦施加最佳化,指令的重新排列與變數的刪除會使得與原始碼的對應變得難以理解。要製作作為產品的快速程式時,使用較高的最佳化等級;想縮小大小時,則使用以大小優先的設定。

  • A. 要製作快速的程式,應使用較高的最佳化等級。
  • B. 正確。與原始碼的對應清楚,適合偵錯。
  • C. 要縮小大小,應使用以大小優先的設定。
練習這個領域 前往領域頁面

編譯器的其他題目

  1. 關於使用剖析資料的最佳化(PGO)的說明,下列何者正確?
  2. 下列何者最適合作為連結時最佳化(LTO)所能實現的最佳化?
  3. 在C語言中,有號整數的溢位是未定義行為。在此前提下,對上方函式進行最佳化的編譯器可能產生的程式碼,下列何者正確?
  4. 在程式的錯誤中,下列何者能在編譯時就被發現?
  5. 在具靜態型別的語言中,編譯器進行型別檢查的主要優點為何?

這個領域的比較