go1.20
カバレッジのプロファイルをコンパイル後のバイナリの実行で取得できるようになった
go build -coverでカバレッジのプロファイルを出力するバイナリにビルドできる
-covevrpkgフラグでカバレッジに含めるパッケージを指定できる
プロフィルが環境変数COVERDIRで指定されたディレクトリに出力される
環境変数COVERDIRのプロファイルを操作するgo tool covdataが追加
go tool covdata percent -i=somedataでカバレッジの割合が出力される
go tool covdata textfmt -i=somedata -o profile.txtでgo testで生成されるプロファイルに変換
go tool covdata merge -i=windows_datadir,macos_datadir -o mergedで複数のOSで実行したプロファイルのマージができる
プロファイル誘導型最適化(PGO)
public preview
CPU pprofファイルをコンパイラのフィードバックとして使用しコンパイラの最適化の決定(FDO)をおこないます
PGOを使用してビルドすると性能が2~4%程度の向上が期待できる
コンパイル時のコードが取得したプロファイルのコードから変更されていた場合、変更箇所は最適化の影響をうけません。
コンパイラはPGOビルドを繰り返しても最適化のばらつきを防ぐような保守的なつくりになっている
go build -pgo=autoでビルドするとdefault.pgoファイルを自動で選択してコンパイルします。
go1.20ではデフォルトでgo build -pgo=off