unroll
このセクションの内容:
構文
#pragmaunroll=n
パラメータ
| 展開されたループ内にあるループ本体の数で、定数の整数。 |
説明
このプラグマディレクティブを使用して、ディレクティブのすぐ後ろにあるループを展開し、展開されたループにnのループ本体があるように指示します。このプラグマディレクティブは、for、do、whileの各ループの直前にのみ配置でき、繰り返し回数はコンパイル時に決定できます。
展開は通常、比較的小さいループで最も効果的です。ただし、より大きなループを展開すると有効な場合もあります。これはたとえば、共通部分式除去や不要なコードの除去など、展開されていないループの繰り返しの間にさらなる最適化の機会がある場合などです。
#pragma unrollディレクティブを使用して、展開のヒューリスティックがあまり効果的でない場合に、ループを強制的に展開することができます。このプラグマディレクティブはまた、積極的なヒューリスティックの展開を抑える場合にも使用できます。
例
#pragma unroll=4
for (i = 0; i < 64; ++i)
{
foo(i * k, (i + 1) * k);
}