編譯器

關於使用剖析資料的最佳化(PGO)的說明,下列何者正確?

  1. A將程式的原始碼重新整理成易讀格式的功能
  2. B編譯器以亂數選擇多種最佳化方法並比較結果的功能
  3. C利用以具代表性的輸入執行時的紀錄,再次進行編譯
查看答案與解析

正確答案:C. 利用以具代表性的輸入執行時的紀錄,再次進行編譯

在PGO中,首先將插入了量測用指令而編譯好的程式以具代表性的輸入執行,記錄哪個分支經常被通過、哪個函式經常被呼叫等。接著利用這些資訊重新編譯,把常走的路徑排成一直線,或將經常被呼叫的函式行內展開,進行符合實際使用方式的最佳化。要注意的是,若輸入與實際使用方式差異很大,效果就會減弱。它不是原始碼的整理,也不是以亂數來選擇。

  • A. 原始碼的整理是其他工具的工作。
  • B. 不是以亂數選擇,而是利用執行的紀錄。
  • C. 正確。利用執行的紀錄來重新編譯。
練習這個領域 前往領域頁面

編譯器的其他題目

  1. 下列何者最適合作為連結時最佳化(LTO)所能實現的最佳化?
  2. 在C語言中,有號整數的溢位是未定義行為。在此前提下,對上方函式進行最佳化的編譯器可能產生的程式碼,下列何者正確?
  3. 在程式的錯誤中,下列何者能在編譯時就被發現?
  4. 在具靜態型別的語言中,編譯器進行型別檢查的主要優點為何?
  5. 在詞法分析中,常用來表示辨識token之規則的是下列何者?

這個領域的比較