IPA過去問ドリル

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

テクノロジ/ソフトウェア

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

出典:平成27年度 秋期 応用情報技術者試験 午前 問19

正解:ウ

解説

コンパイラの最適化には,定数の伝播(値が変わらないと分かった変数を定数に置き換える)や強さの軽減,共通部分式の削除,ループの展開など様々な手法があります。設問のうち,値が変わらないと確認できた変数を定数に置き換える最適化は,実行時の変数参照や計算を減らして実行時間を短縮します。

選択肢ごとの解説

  • 誤り。実行回数の多いループを回数の少ないループの繰返しに分解しても,総実行回数は変わらず,むしろループ制御のオーバヘッドが増えるため最適化にはなりません。
  • 誤り。X+Xのような単純な加算をX*2の乗算に置き換えるのは,一般に乗算の方がコストが高いため最適化に逆行します。
  • 正しい。値が変化しないと確認できた変数を定数に置き換えることで,実行時の変数アクセスや再計算を省略でき,実行時間の短縮につながります。
  • 誤り。重複する処理をサブルーチン化することはプログラムサイズの削減や保守性向上に役立ちますが,呼出しのオーバヘッドが増えるため実行時間の短縮を直接目的とした最適化ではありません。
応用情報技術者の過去問を演習モードで解く