平成28年度春期 エンベデッドシステムスペシャリスト試験 午前II 問11
【問題11】
コンパイラによる最適化において、オブジェクトコードの所要記憶容量が削減できるものはどれか。
【解説】
ア: 関数のインライン展開
誤り。インライン展開は関数呼び出しのオーバーヘッドを削減するために、関数の本体を直接埋め込む最適化です。しかし、コードの重複が増え、オブジェクトコードのサイズが大きくなる可能性があります。
イ: 定数の埋込み
正しい。定数の埋込み(Constant Folding)は、プログラム内の定数をコンパイル時に直接埋め込むことで、実行時の計算を減らし、不要なメモリ使用を削減できます。オブジェクトコードのサイズ削減に寄与する場合があります。
ウ: ループ内不変式の移動
誤り。ループ内で変化しない計算をループの外に移動することで、実行効率を向上させる最適化ですが、オブジェクトコードのサイズ削減には直接関与しません。
エ: ループのアンローリング
誤り。ループのアンローリング(Loop Unrolling)は、ループ回数を減らすためにループの中身を複製する最適化ですが、その分コードのサイズが増加することが多いです。
出典:平成28年度 春期 エンベデッドシステムスペシャリスト試験 午前II 問11