編譯器

下列何者最適合作為連結時最佳化(LTO)所能實現的最佳化?

  1. A即使是位於不同檔案的函式之間,也能進行行內展開等最佳化
  2. B只能展開單一函式內的迴圈
  3. C不再需要連結處理,目的檔可以直接執行
查看答案與解析

正確答案:A. 即使是位於不同檔案的函式之間,也能進行行內展開等最佳化

在一般的編譯中,原始檔是一個一個分別轉換為機器碼,因此看不到其他檔案中函式的內容,無法進行跨檔案的行內展開與常數傳播。在LTO中,各檔案以中介表示的形式保留,在連結時再將整個程式一併最佳化。藉此就能做到跨檔案的行內展開,以及刪除任何地方都沒被呼叫的函式等。單一函式內迴圈的展開,在一般的編譯中也能做到。

  • A. 正確。能夠進行跨檔案的最佳化。
  • B. 函式內迴圈的展開,在一般的編譯中也能做到。
  • C. 連結仍然是必要的。
練習這個領域 前往領域頁面

編譯器的其他題目

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

這個領域的比較