編譯器
關於迴圈展開(loop unrolling)的主要效果,下列何者正確?
- A判斷次數與分支的開銷減少,指令也更容易重新排列
- B迴圈主體只剩一次份,程式的程式碼變小
- C將迴圈抽出成函式,使其能從其他地方呼叫
查看答案與解析
正確答案:A. 判斷次數與分支的開銷減少,指令也更容易重新排列
迴圈展開是一種最佳化,例如將迴圈主體並排寫出4次份,使重複次數成為原來的四分之一。判斷次數與分支的指令減少,而且並排的主體之間的指令可以組合後重新排列,因此較容易填補運算的等待時間。代價是程式碼變大,也可能擠壓指令快取。「主體剩一次份而使程式碼變小」是相反的說明,而將迴圈抽出成函式則是另一種轉換。
- A. 正確。分支等開銷減少,指令更容易重新排列。
- B. 因為並排了多份主體,程式碼反而會變大。
- C. 抽出成函式是另一種轉換。