平成27年 秋期 応用情報技術者 午前 問19

目的プログラムの実行時間を短くするためにコンパイラが行う最適化方法として、適切なものはどれか。

 ア  繰返し回数の多いループは、繰返し回数がより少ないループを複数回繰り返すように変形する。
例えば、10,000回実行されるループは、100回実行されるループを100回繰り返すようにする。
 イ  算術式の中で、加算でも乗算でも同じ結果が得られる演算は乗算で行うように変更する。
例えば、“X + X”は“2 * X”で置き換える。
 ウ  定数が格納される変数を追跡し、途中で値が変更されないことが確認できれば、その変数を定数で置き換える。
 エ  プログラム中の2か所以上で同じ処理を行っている場合は、それらをサブルーチン化し、元のプログラムのそれらの部分をサブルーチン呼出しで置き換える。


答え ウ


解説

 ア  説明の処理を行っても実行時間の短縮にはなりません。
 イ  乗算より加算の処理のほうが処理時間が短いので、説明の処理を行っても実行時間の短縮にはなりません。
 ウ  値の変更されない変数を定数に置き換えることは、実行時間の短縮になります。
 エ  サブルーチン化は目的プログラムのサイズの削減にはなりますが、実行時間の短縮にはなりません。(サブルーチンへの分岐がオーバヘッドになり実行時間は長くなります。)


キーワード
・コンパイラの最適化

キーワードの解説
  • コンパイラの最適化(Optimize)
    CやC++などの高級言語をコンパイラでオブジェクトコードに変換するときに、コンパイラが処理速度やオブジェクトコードの容量の面から、最適な方法にすることです。
    コンパイラの最適化には、処理速度を重点的に最適化するもの、オブジェクトのサイズを重点的に最適化するものなどのオプションがあるのが普通で、オプションによって、プログラムの振る舞いに差が出ます。
    そのため、ソフトウェアの設計段階で最適化オプションについては決めて、後で変更しないようにすることが大事です。

もっと、「コンパイラの最適化」について調べてみよう。

戻る 一覧へ 次へ