目的プログラムの実行時間を短くするためにコンパイラが行う最適化方法として、適切なものはどれか。
ア | 繰返し回数の多いループは、繰返し回数がより少ないループを複数回繰り返すように変形する。 例えば、10,000回実行されるループは、100回実行されるループを100回繰り返すようにする。 |
イ | 算術式の中で、加算でも乗算でも同じ結果が得られる演算は乗算で行うように変更する。 例えば、“X+X”は“2*X”で置き換える。 |
ウ | 定数が格納される変数を追跡し、途中で値が変更されないことが確認できれば、その変数を定数で置き換える。 |
エ | プログラム中の2か所以上で同じ処理を行っている場合は、それらをサブルーチン化し、元のプログラムのそれらの部分をサブルーチン呼出しで置き換える。 |
答え ウ
【解説】
ア | 説明の処理を行っても実行時間の短縮にはなりません。 |
イ | 乗算より加算の処理のほうが処理時間が短いので、説明の処理を行っても実行時間の短縮にはなりません。 |
ウ | 値の変更されない変数を定数に置き換えることは、実行時間の短縮になります。 |
エ | サブルーチン化は目的プログラムのサイズの削減にはなりますが、実行時間の短縮にはなりません。(サブルーチンへの分岐がオーバヘッドになり実行時間は長くなります。) |
【キーワード】
・コンパイラの最適化