編譯器

透過小視窗檢視所產生機器碼的一小段序列,並將無用的指令組合替換為更好的指令,這種最佳化稱為什麼?

  1. A窺孔最佳化(peephole optimization)
  2. B連結時最佳化
  3. C使用剖析資料的最佳化
查看答案與解析

正確答案:A. 窺孔最佳化(peephole optimization)

窺孔最佳化就像從窺視孔觀看一樣,只檢視連續的幾條指令,找出浪費並加以替換的最佳化。例如省略剛把值寫入記憶體後又立刻從同一位置讀取的指令、刪除加0的指令,或把兩條指令合併成一條。多半在產生程式碼之後進行,是簡單卻有效果的最佳化。連結時最佳化是針對整個程式,使用剖析資料的最佳化則是利用執行的紀錄來進行最佳化。

  • A. 正確。以數條指令的視窗找出浪費並加以替換。
  • B. 連結時最佳化是將整個程式一併最佳化。
  • C. PGO是利用執行的紀錄進行最佳化。
練習這個領域 前往領域頁面

編譯器的其他題目

  1. 在上方程式碼中,將 sq 行內展開之後接著生效的最佳化,以及其結果,下列何者正確?
  2. 關於軟體管線化(software pipelining)的說明,下列何者正確?
  3. 在嚴格的設定下,編譯器不會擅自將浮點數的加法 (a + b) + c 重新排列為 a + (b + c),其理由下列何者正確?
  4. 編譯器的自動向量化所使用的指令種類,下列何者正確?
  5. 編譯器的最佳化必須遵守的基本條件,下列何者正確?

這個領域的比較