コンパイラ
プロファイルを使った最適化(PGO)の説明として正しいものはどれか。
- Aプログラムのソースコードを読みやすく整形し直す機能
- Bコンパイラが乱数で最適化の方法をいくつも選び、結果を比べる機能
- C代表的な入力での実行の記録を使って、再びコンパイルする
答えと解説を見る
正解:C. 代表的な入力での実行の記録を使って、再びコンパイルする
PGOでは、まず計測用の命令を入れてコンパイルしたプログラムを代表的な入力で実行し、どの分岐がよく通るか、どの関数がよく呼ばれるかなどを記録します。次にその情報を使って再コンパイルし、よく通る道を一直線に並べたり、よく呼ばれる関数をインライン展開したりして、実際の使われ方に合った最適化を行います。入力が実際の使われ方と大きく違うと効果が薄れる点に注意が必要です。ソースの整形や乱数による選択ではありません。
- A. ソースの整形は別の道具の仕事です。
- B. 乱数で選ぶのではなく、実行の記録を使います。
- C. 正しい。実行の記録を使って再コンパイルします。