編譯器
下列何者最適合作為連結時最佳化(LTO)所能實現的最佳化?
- A即使是位於不同檔案的函式之間,也能進行行內展開等最佳化
- B只能展開單一函式內的迴圈
- C不再需要連結處理,目的檔可以直接執行
查看答案與解析
正確答案:A. 即使是位於不同檔案的函式之間,也能進行行內展開等最佳化
在一般的編譯中,原始檔是一個一個分別轉換為機器碼,因此看不到其他檔案中函式的內容,無法進行跨檔案的行內展開與常數傳播。在LTO中,各檔案以中介表示的形式保留,在連結時再將整個程式一併最佳化。藉此就能做到跨檔案的行內展開,以及刪除任何地方都沒被呼叫的函式等。單一函式內迴圈的展開,在一般的編譯中也能做到。
- A. 正確。能夠進行跨檔案的最佳化。
- B. 函式內迴圈的展開,在一般的編譯中也能做到。
- C. 連結仍然是必要的。