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.sh
my_binary
のサイズが 42
バイトの場合、
生成される BMF JSON は次のようになります:
{ "/bin/sh -c ./my_build_script.sh": { "build-time": { "value": 87.0 } }, "my_binary": { "file-size": { "value": 42.0 } }}
🐰 おめでとうございます!ビルド時間の追跡方法を習得しました! 🎉