什麼是常數摺疊
將編譯時就能確定值的運算式事先算好,替換成結果常數的最佳化。例如把 3 * 4 變成 12。可減少執行時的計算。
日文名稱: 定数畳み込み
「常數摺疊」出現在1領域的6道練習題中(編譯器等)。
這個名詞所屬的領域: 編譯器
將編譯時就能確定值的運算式事先算好,替換成結果常數的最佳化。例如把 3 * 4 變成 12。可減少執行時的計算。
日文名稱: 定数畳み込み
「常數摺疊」出現在1領域的6道練習題中(編譯器等)。
這個名詞所屬的領域: 編譯器
常數摺疊是一種最佳化,會事先計算在編譯時值就已確定的運算式,並替換為結果常數。
關於編譯器的常數摺疊(constant folding),下列哪個範例正確?經常數摺疊將 8 * 2 計算為16後,m = 16,再經傳播與摺疊,m + 1 成為 16 + 1 = 17。
對上方程式碼反覆進行常數傳播與常數摺疊,最終會變成什麼樣的程式碼?在常數傳播與常數摺疊之後,會產生大量不再被使用的指派,因此經常搭配使用。
在無用程式碼刪除(死碼消除)中被移除的對象,下列何者正確?此外,呼叫端的常數等會傳到主體中,使常數摺疊與無用程式碼刪除得以生效,這是很大的優點。
關於函式行內展開(inline expansion)的優點與缺點,下列組合何者正確?接著進行常數摺疊,就能算出 6 * 6 = 36、36 + 1 = 37,g 就變成只回傳37的程式碼。
在上方程式碼中,將 sq 行內展開之後接著生效的最佳化,以及其結果,下列何者正確?行內展開 迴圈展開 中間表示法(IR) 共同子運算式消除 向量化 抽象語法樹(AST) 指令排程 基本區塊 強度削減 控制流程圖