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