📝

GoのProfile-guided optimizationの使い方

2023/04/19に公開

本記事ではGo 1.20から利用できるようになったProfile-guided optimization(以下PGO)の、仕組みと使い方を短く簡単に紹介します。

PGOとはプログラム実行時の情報≒CPUプロファイルを用いて、そのプログラムのコンパイル時に最適化・高速化する仕組みです。プロファイル結果から、実行頻度の少ないコードの速度を犠牲に、実行頻度の多いコードの速度を向上させ、トータルとしての実行時間を短くする、というのが大まかな仕組みです。

PGOを有効化してコンパイルするにはビルド時に-pgoオプションを指定します。-pgoに指定できる値はCPUプロファイルのファイル名です。Go 1.20時点でのデフォルト値は-pgo=offでPGOは無効化されています。他の特別な値として-pga=autoを指定でき、その場合に参照するCPUプロファイルのファイル名はdefault.pgoとなります。

複数のプロファイル情報はgo tool pprofコマンドでマージできます。

参考資料

Discussion