迴圈判斷外提, 英語, loop, unswitching, 是一種編譯器最佳化, 的方法, 將迴圈中的條件式移到迴圈之外, 否則, 式裡各放置一個原來迴圈的內容, 這可以增進迴圈平行處理的可能性, 以下是一個簡單的例子, 若程式碼想要將陣列, 相加, 並根據變數, 做別的事, 就有這種, 的程式碼, 1000, 1000, 1000, 因為有迴圈裡的條件式, 要安全的平行處理這個迴圈變得很困難, 若進行判斷外提, 這個迴圈會變成, 1000, 1000, 1000, else, 1000, 雖然迴圈外提會讓程式碼. 迴圈判斷外提 英語 loop unswitching 是一種編譯器最佳化 的方法 迴圈判斷外提將迴圈中的條件式移到迴圈之外 在 若 與 否則 式裡各放置一個原來迴圈的內容 這可以增進迴圈平行處理的可能性 1 以下是一個簡單的例子 若程式碼想要將陣列 x y 相加 並根據變數 w 做別的事 就有這種 C 的程式碼 int i w x 1000 y 1000 for i 0 i lt 1000 i x i x i y i if w y i 0 因為有迴圈裡的條件式 要安全的平行處理這個迴圈變得很困難 若進行判斷外提 這個迴圈會變成 int i w x 1000 y 1000 if w for i 0 i lt 1000 i x i x i y i y i 0 else for i 0 i lt 1000 i x i x i y i 雖然迴圈外提會讓程式碼的量加倍 現在各個迴圈可以分別進行最佳化 迴圈外提在版本 3 4 引入 GCC 2 參考資料 编辑 Keith Cooper Linda Torczon Engineering a Compiler 2004 520 521 2021 07 31 ISBN 9781558606982 原始内容存档于2021 07 31 GCC 3 4 系列 更動 新功能與臭蟲修復 2012 06 03 原始内容存档于2010 07 10 取自 https zh wikipedia org w index php title 迴圈判斷外提 amp oldid 72892394, 维基百科,wiki,书籍,书籍,图书馆,