編譯器

編譯器的最佳化必須遵守的基本條件,下列何者正確?

  1. A一定要使指令數量比原本的程式減少一半以下
  2. B只要變快,程式的輸出稍有改變也無妨
  3. C對於正確的程式,不改變外部可見的結果
查看答案與解析

正確答案:C. 對於正確的程式,不改變外部可見的結果

最佳化是為了讓程式變快或變小而進行的轉換,但不得改變正確撰寫之程式的輸出或寫入檔案等外部可見的行為。在這個條件之下,才能對調計算順序,或刪除不需要的計算。指令數量能減少多少視情況而定,並沒有減半以下這種規定。可以改變結果的情況,僅限於使用者明確選擇了例如容許浮點數重新排列的設定時。

  • A. 能減少的量並沒有規定。
  • B. 不能為了速度而改變結果。
  • C. 正確。不改變外部可見的結果是大原則。
練習這個領域 前往領域頁面

編譯器的其他題目

  1. 關於程式碼產生階段之一的指令選擇(instruction selection)的說明,下列何者正確?
  2. 關於交叉編譯器(cross compiler)的說明,下列何者正確?
  3. 以偵錯器檢視施加了最佳化而編譯的程式時,有時部分變數的值會顯示為「無法顯示」。主要原因為何?
  4. 對上方函式充分進行常數傳播、常數摺疊與無用程式碼刪除後,函式所回傳的值與剩餘的程式碼,下列何者正確?
  5. 關於編譯器詞法分析的作用,下列何者正確?

這個領域的比較