循環判斷外提

循環判斷外提(英語:loop unswitching)是一種編譯器最佳化(英語:compiller optimization)的方法。

基本介紹

  • 中文名:循環判斷外提
  • 外文名:loop unswitching
  • 目的:使編譯器最佳化
  • 學科:計算機科學
簡介,例子,GCC,

簡介

循環判斷外提(英語:loop unswitching)是一種編譯器最佳化(英語:compiller optimization)的方法。
循環判斷外提將循環中的條件式移到循環之外,在“若”與“否則”式里各放置一個原來循環的內容。
這可以增進循環平行處理的可能性。

例子

以下是一個簡單的例子。
若程式碼想要將陣列xy相加,並根據變數w做別的事,就有這種 C 的程式碼:
int i, w, x[1000], y[1000];  for (i = 0; i < 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 < 1000; i++) {      x[i] = x[i] + y[i];      y[i] = 0;    }  } else {    for (i = 0; i < 1000; i++) {      x[i] = x[i] + y[i];    }  }
雖然循環外提會讓程式碼的量加倍,現在各個循環可以分別進行最佳化。

GCC

循環外提在版本 3.4 引入GCC
GCC(GNU編譯器套裝),指一套程式語言編譯器,以GPLLGPL許可證所發行的自由軟體,也是GNU項目的關鍵部分,也是GNU工具鏈的主要組成部分之一。GCC(特別是其中的C語言編譯器)也常被認為是跨平台編譯器的事實標準。
GNU編譯器套裝
開發者
初始版本
1987年5月23日
穩定版本
8.1(2018年5月2日,2個月前)
程式語言
C++
作業系統
類型
許可協定
GNU通用公共許可證第三版或更新
網站
gcc.gnu.org
原始碼庫
gcc.gnu.org/viewcvs/gcc/
原名為GNU C語言編譯器(GNU C Compiler),因為它原本只能處理C語言。GCC在發布後很快地得到擴展,變得可處理C++。之後也變得可處理FortranPascalObjective-CJavaAdaGo與其他語言。
許多作業系統,包括許多類Unix系統,如Linux及BSD家族都採用GCC作為標準編譯器。蘋果電腦預裝的Mac OS X作業系統也採用這個編譯器。
GCC原本用C開發,後來因為LLVMClang的崛起,它更快地將開發語言轉換為C++。許多C的愛好者在對C++一知半解的情況下主觀認定C++的性能一定會輸給C,但是Ian Lance Taylor給出了不同的意見,並表明C++不但性能不輸給C,而且能設計出更好,更容易維護的程式。

相關詞條

熱門詞條

聯絡我們