コンパイラ

プロファイルを使った最適化(PGO)の説明として正しいものはどれか。

  1. Aプログラムのソースコードを読みやすく整形し直す機能
  2. Bコンパイラが乱数で最適化の方法をいくつも選び、結果を比べる機能
  3. C代表的な入力での実行の記録を使って、再びコンパイルする
答えと解説を見る

正解:C. 代表的な入力での実行の記録を使って、再びコンパイルする

PGOでは、まず計測用の命令を入れてコンパイルしたプログラムを代表的な入力で実行し、どの分岐がよく通るか、どの関数がよく呼ばれるかなどを記録します。次にその情報を使って再コンパイルし、よく通る道を一直線に並べたり、よく呼ばれる関数をインライン展開したりして、実際の使われ方に合った最適化を行います。入力が実際の使われ方と大きく違うと効果が薄れる点に注意が必要です。ソースの整形や乱数による選択ではありません。

  • A. ソースの整形は別の道具の仕事です。
  • B. 乱数で選ぶのではなく、実行の記録を使います。
  • C. 正しい。実行の記録を使って再コンパイルします。
この分野を解く 分野ページへ

コンパイラのほかの問題

  1. リンク時最適化(LTO)によって可能になる最適化として最も適切なものはどれか。
  2. C言語で、符号付き整数のオーバーフローは未定義動作である。この前提で、上の関数を最適化するコンパイラが生成しうるコードとして正しいものはどれか。
  3. プログラムの誤りのうち、コンパイルの時点で見つけることができるものはどれか。
  4. 静的な型をもつ言語で、コンパイラが型検査を行う主な利点はどれか。
  5. 字句解析でトークンを見分ける規則を表すのによく使われるものはどれか。