Bencherを使ったビルド時間の追跡方法
Bencherは、最も人気のあるベンチマークハーネスを標準でサポートしています。しかし、実行可能ファイルのコンパイル時間のように、成果物自体をビルドするのにどれくらい時間がかかるかを測定したい場合があります。幸運なことに、Bencherはビルド時間の追跡もサポートしています。ビルド時間を追跡する最も簡単な方法は、--build-time フラグを使用して bencher run CLIサブコマンドを使用することです。内部では、bencher run は結果を Bencher Metric Format (BMF) JSON として出力します。そのため、json アダプターを明示的に使用するのは良い慣行です。
もし、バイナリをビルドするスクリプトが ./my_build_script.sh にある場合、そのバイナリのビルド時間をbencher runとjsonアダプターで追跡することができます。--build-timeフラグはベンチマークコマンドを必要とします。
bencher run --build-time --adapter json ./my_build_script.shビルドスクリプトが完了するのに 87.0 秒かかった場合、生成されるBMF JSONは次のようになります:
{ "/bin/sh -c ./my_build_script.sh": { "build-time": { "value": 87.0 } }}このときのベンチマーク名は /bin/sh -c ./my_build_script.sh です。これは、コマンドが単一の引数のみであるため、bencher runはデフォルトでシェル形式での実行を行うからです。あるいは、exec形式の使用を強制したい場合、複数の引数を提供するか、--exec フラグを使用することができます。
bencher run --build-time --adapter json --exec ./my_build_script.shこのexec形式のビルドが 86.98 秒かかった場合、生成されるBMF JSONは次のようになります:
{ "./my_build_script.sh": { "build-time": { "value": 86.98 } }}ここでのベンチマーク名は単に ./my_build_script.sh です。./my_build_script.sh オブジェクトには build-time キーが含まれています。build-time は組み込みのビルド時間メジャーのスラッグです。ビルド時間メジャーは、すべてのプロジェクトでデフォルトで作成されるわけではありません。しかし、ビルド時間メジャーを使用すると、プロジェクトに自動的に作成されます。ビルド時間メジャーオブジェクトには、ビルド時間の値(秒単位)を持つメトリックが含まれており、我々の例では 87.0 と 86.98 です。
ビルド時間は常に小数点以下二桁に丸められます。つまり、42.666666 のような長い小数になることは_決して_ありません。
ファイルサイズを追跡する
成果物のビルドにかかる時間を追跡することに加えて、ファイルサイズを追跡する かもしれません。
bencher run
は、ビルド時間とファイルサイズの両方を追跡することをサポートしています。
./my_build_script.sh ビルドスクリプトの出力が
./path/to/my_binary のパスにあるバイナリであった場合、
次のコマンドでコンパイル時間とバイナリサイズの両方を追跡できます:
bencher run --build-time --file-size ./path/to/my_binary --adapter json ./my_build_script.shmy_binary のサイズが 42 バイトの場合、
生成される BMF JSON は次のようになります:
{ "/bin/sh -c ./my_build_script.sh": { "build-time": { "value": 87.0 } }, "my_binary": { "file-size": { "value": 42.0 } }}🐰 おめでとうございます!ビルド時間の追跡方法を習得しました! 🎉