編譯器
關於編譯器的常數摺疊(constant folding),下列哪個範例正確?
- A將多次呼叫相同函式的部分,彙整為一次呼叫
- B將 x = 3 * 4 在編譯時計算,變成 x = 12
- C將迴圈主體並排4次份,以減少重複次數
查看答案與解析
正確答案:B. 將 x = 3 * 4 在編譯時計算,變成 x = 12
常數摺疊是一種最佳化,會事先計算在編譯時值就已確定的運算式,並替換為結果常數。3 * 4 每次執行都會得到相同的12,因此不需要在執行時做乘法。與常數傳播搭配使用時,連經由變數的計算也能一併摺疊。浮點數還有需要統一捨入方式等注意事項。並排迴圈主體的是迴圈展開,彙整函式呼叫則是另一種最佳化。
- A. 彙整函式呼叫並不是常數摺疊。
- B. 正確。事先計算值已確定的運算式。
- C. 並排主體的是迴圈展開。