目的プログラムの実行時間を短くするためにコンパイラが行う最適化方法として、適切なものはどれか。
ア | 繰返し回数の多いループは、繰返し回数がより少ないループを複数回繰り返すように変形する。 例えば、10,000回実行されるループは、100回実行されるループを100回繰り返すようにする。 |
イ | 算術式の中で、加算でも乗算でも同じ結果が得られる演算は乗算で行うように変更する。 例えば、“X + X”は“2 * X”で置き換える。 |
ウ | 定数が格納される変数を追跡し、途中で値が変更されないことが確認できれば、その変数を定数で置き換える。 |
エ | プログラム中の2か所以上で同じ処理を行っている場合は、それらをサブルーチン化し、元のプログラムのそれらの部分をサブルーチン呼出しで置き換える。 |
コンパイラとは、コンピュータ・プログラミング言語の処理系の一種で、高水準言語によるソースコードから、機械語あるいは元のプログラムよりも低い水準のコードに変換するプログラムである。
コンパイラは次のフェーズによってオブジェクトプログラムを生成する。
ア | × | 全体としての実行回数が変わらなければ、実行時間を短くすることはできない。 すなわち、繰り返し回数が多いループは繰り返し回数事態を削減するようにする。 |
イ | × | 除算命令より加算命令の方が高速に実行できる。 すなわち、この置き換えは速度低下を招く。 |
ウ | ○ | コンパイラの最適化には「変数の定数化」がある。 処理中は値が変化しない変数を定数に置き換えることで、変数の読み込みのオーバヘッドを省略し、メモリへのアクセス時間を削減して高速化を図ることができる。 |
エ | × | サブルーチンの呼び出しにはオーバヘッドが伴う。 この置き換えも速度低下を招く可能性がある。 |