ベンチマークの概要
ほとんどのベンチマーク結果は、一時的なものです。 スクロールバック限界に達すると、ターミナルから消えてしまいます。 いくつかのベンチマークハーネスは、結果をキャッシュさせることができますが、ほとんどがローカルにのみキャッシュされます。 Bencherを使用すると、ローカルおよびCIランの両方からベンチマークを追跡し、過去の結果と比較することができます。
ベンチマークを追跡する最も簡単な方法は、bencher run
CLIサブコマンドです。
これは、既存のベンチマークハーネスの出力をラップし、レポートを生成します。
このレポートはBencher APIサーバーに送信され、ベンチマークハーネスの出力がベンチマークハーネスアダプターを使用して解析されます。
ベンチマークハーネスアダプターは、存在するすべてのベンチマークとそれらに対応するメトリクスを検出します。
これらのベンチマークとメトリクスは、レポートと一緒に保存されます。
閾値 が設定されている場合は、新しいメトリクスがレポートに存在する各ベンチマークの過去のメトリクスと比較されます。
リグレッションが検出されると、アラートが生成されます。
ここからは、混乱を避けるために、あなたの「ベンチマーク」を「パフォーマンスリグレッションテスト」と呼びます。
ベンチマーク
ベンチマークは、名前付きのパフォーマンスリグレッションテストです。 ベンチャーで新しいパフォーマンスリグレッションテストが行われた場合、ベンチマークが自動的に作成されます。 そうでない場合は、パフォーマンスリグレッションテストの名前がベンチマークの一意の識別子として使用されます。
パフォーマンスリグレッションテストの名前を変更するときは注意してください。 ベンチャーでこの新しい名前に一致するようにベンチマークを手動でリネームする必要があります。 そうしないと、リネームされたパフォーマンスリグレッションテストは新しいベンチマークと見なされます。 この注意事項は、いくつかのパフォーマンスリグレッションテストを 移動 する場合にも適用されます。 ベンチマークハーネスによっては、パフォーマンスリグレッションテストへのパスがその名前の一部である場合があります。
上記の注意事項に対する唯一の例外は、ベンチマークを無視する場合です。 詳細はアラートの抑制をご覧ください。
メトリック
メトリックは、単一の時点でのパフォーマンス回帰テストの結果を示します。1つのメトリックに対して、最大3つの値を収集することができます: value
、lower_value
、および upper_value
。value
はすべてのメトリックに必須ですが、lower_value
とupper_value
は独立してオプションです。どの値が収集されるかは、ベンチマークハーネスアダプタによって決定されます。
Measure
Measureは、Metricの測定単位です。
デフォルトでは、すべてのプロジェクトはLatency
とThroughput
のMeasureで始まり、それぞれの単位はnanoseconds (ns)
とoperations / second (ops/s)
です。
Measureはベンチマークハーネスアダプターによって決定されます。
レポート
レポートは、特定のブランチとテストベッドに対するベンチマークとそのメトリクスの集合です。レポートは主にbencher run
CLIサブコマンドを使用して生成されます。全体像についてはパフォーマンス回帰テストの追跡方法をご覧ください。
Branch
Branchは、レポートを実行する際に使用されるgit
リファレンスです(例:ブランチ名またはタグ)。
デフォルトでは、すべてのプロジェクトはmain
ブランチで開始します。
bencher run
CLIサブコマンドを使用する場合、指定がない場合はmain
がデフォルトのブランチです。
詳細については、ブランチの選択を参照してください。
Head
ブランチのヘッドは、そのブランチの最新のインスタンスです。 ヘッドは、最も最近の開始ポイントを参照します(存在する場合)。 ブランチが新しい開始ポイントを取得するたびに、新しいヘッドが生成されます。 詳細な概要については、ブランチの選択を参照してください。
Start Point
ブランチはスタートポイントを持つことができます。
スタートポイントは特定のバージョン(および利用可能であればgit
のハッシュ)の別のブランチです。
スタートポイントから履歴メトリクスと、オプションでスレッショルドがコピーされます。
詳細についてはブランチ選択をご参照ください。
テストベッド
テストベッドは、レポートを実行する際に使用されるテスト環境の名称です。デフォルトでは、すべてのプロジェクトは localhost
テストベッドから始まります。bencher run
CLI サブコマンドを使用する場合、指定がない場合は localhost
がデフォルトのテストベッドです。
Threshold
Threshold(しきい値)は、パフォーマンスの低下をキャッチするために使用されます。 Thresholdは、Branch、Testbed、およびMeasureのユニークな組み合わせに割り当てられます。 詳細は thresholds を参照してください。
テスト
テストは、しきい値によってパフォーマンスの低下を検出するために使用されます。 テストとそのパラメータの組み合わせは、モデルと呼ばれます。 完全な概要については、しきい値をご覧ください。
モデル
モデルは、テストとそのしきい値のパラメータを組み合わせたものです。 モデルには、下限境界、上限境界、もしくはその両方が必要です。
- 下限境界
- 下限境界は、値が小さいほどパフォーマンスの低下を示す場合に使用されます。
スループット
指標などが該当します。
- 下限境界は、値が小さいほどパフォーマンスの低下を示す場合に使用されます。
- 上限境界
- 上限境界は、値が大きいほどパフォーマンスの低下を示す場合に使用されます。
レイテンシー
指標などが該当します。
- 上限境界は、値が大きいほどパフォーマンスの低下を示す場合に使用されます。
各境界は境界限界を計算するために使用されます。 そして、新しいメトリクスは各境界限界に対してチェックされます。 新しいメトリクスが下限境界限界を下回るか、上限境界限界を上回った場合にアラートが生成されます。 詳細はしきい値を参照してください。
境界制限
境界制限は、下限または上限から計算された値です。 この値は新しいメトリックと比較するために使用されます。 新しいメトリックが下限を下回るか上限を上回ると、アラートが生成されます。 詳細は閾値をご覧ください。
アラート
新しいメトリックがテストに失敗し、下限値を下回るまたは上限値を上回る場合にアラートが生成されます。詳細については、しきい値を参照してください。
🐰 おめでとうございます! ベンチマーク~~~~パフォーマンス回帰テストを追跡するすべてについて学びました! 🎉