コンパイラ
ループ展開(ループアンローリング)の主な効果として正しいものはどれか。
- A回数の判定や分岐の手間が減り、命令も並べ替えやすくなる
- Bループの本体が1回分だけになり、プログラムのコードが小さくなる
- Cループを関数として切り出し、ほかの場所から呼び出せるようにする
答えと解説を見る
正解:A. 回数の判定や分岐の手間が減り、命令も並べ替えやすくなる
ループ展開は、ループの本体を例えば4回分並べて書き、繰り返しの回数を4分の1にする最適化です。回数の判定や分岐の命令が減るうえ、並べた本体どうしの命令を組み合わせて並べ替えられるので、演算の待ち時間を埋めやすくなります。その代わりコードは大きくなり、命令キャッシュを圧迫することもあります。本体が1回分になってコードが小さくなるのは逆の説明で、ループを関数に切り出すのは別の変換です。
- A. 正しい。分岐などの手間が減り、命令を並べ替えやすくなります。
- B. 本体を複数並べるので、コードはむしろ大きくなります。
- C. 関数に切り出すのは別の変換です。