トップ過去問一覧応用情報技術者 平成20年・秋 > 問39
問39

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

○正解
×不正解

繰返し回数の多いループは、繰返し回数がより少ないループを複数回繰り返すように変形する。例えば、10,000回実行されるループは、100回実行されるループを100回繰り返すようにする。

算術式の中で、加算でも乗算でも同じ結果が得られる演算は乗算で行うように変更する。例えば、"X+X"は"2*X"で置き換える。

定数が格納される変数を追跡し、途中で値が変更されないことが確認できれば、その変数を定数で置き換える。

プログラム中の2か所以上で同じ処理を行っている場合は、それらをサブルーチン化し、元のプログラムのそれらの部分をサブルーチン呼出しで置き換える。

解説

更新されない変数を定数に置き換えることによって、メモリやレジスタへのアクセスが減るため、プログラムの高速化につながります。

 

不正解の選択肢は最適化と逆のことをやっています。

 

>繰返し回数の多いループは、繰返し回数がより少ないループを複数回繰り返すように変形する。例えば、10,000回実行されるループは、100回実行されるループを100回繰り返すようにする。

2重ループにしようが全体の実行回数は変わらないので実行時間は短くなりません。むしろ構造が複雑になる分、遅くなります。

 

>算術式の中で、加算でも乗算でも同じ結果が得られる演算は乗算で行うように変更する。例えば、"X+X"は"2*X"で置き換える。

乗算の方が複雑でしょう。

 

>プログラム中の2か所以上で同じ処理を行っている場合は、それらをサブルーチン化し、元のプログラムのそれらの部分をサブルーチン呼出しで置き換える。

サブルーチンを呼び出すには、それなりのコスト(オーバヘッド)がかかるものです。よって実行時間は遅くなります。サブルーチンの利用は、ソフトウェアの保守性、メモリやキャッシュの有効活用という点ではよい影響を与えます。

無料学習システムはこちら
→間違えた問題を繰り返し学習
→分野別学習
→模擬試験モード
デモサイト
無料ユーザ登録

問題文や解説文の内容の正確性については、できるかぎりチェックをしていますが、間違いがある可能性があります。 十分ご注意の上、参考までにご利用ください。