コンパイラ

生成した機械語の短い並びを小さな窓で見て、むだな命令の組み合わせをより良い命令に置き換える最適化を何と呼ぶか。

  1. Aピープホール最適化
  2. Bリンク時最適化
  3. Cプロファイルを使った最適化
答えと解説を見る

正解:A. ピープホール最適化

ピープホール最適化は、のぞき穴(ピープホール)から見るように、連続した数命令だけを見て、むだを見つけて置き換える最適化です。例えば、値をメモリに書いた直後に同じ場所から読む命令を省いたり、0を足す命令を消したり、2つの命令を1つの命令にまとめたりします。コード生成のあとに行うことが多く、単純ですが効果のある最適化です。リンク時最適化はプログラム全体を、プロファイルを使った最適化は実行の記録を使って最適化します。

  • A. 正しい。数命令の窓でむだを見つけて置き換えます。
  • B. リンク時最適化はプログラム全体をまとめて最適化します。
  • C. PGOは実行の記録を使って最適化します。
この分野を解く 分野ページへ

コンパイラのほかの問題

  1. 上のコードで、sqをインライン展開したあとに続けて効く最適化と、その結果として正しいものはどれか。
  2. ソフトウェアパイプライン化(ソフトウェアパイプライニング)の説明として正しいものはどれか。
  3. コンパイラが、浮動小数点数の足し算 (a + b) + c を、厳密な設定のもとでは a + (b + c) に勝手に並べ替えない理由として正しいものはどれか。
  4. コンパイラの自動ベクトル化で使われる命令の種類として正しいものはどれか。
  5. コンパイラの最適化が守らなければならない基本的な条件として正しいものはどれか。