CIでRustのコンパイル時間を追跡する方法

Everett Pompeii

Everett Pompeii


コンパイル時間は、特にRustにおいてビルド時間の重要な部分を占めることがあります。 継続的ベンチマークとは、変更セットごとにベンチマークを実行し、変更がパフォーマンスの低下を引き起こさないことを確認するプラクティスです。 コンパイル時間をベンチマークとして扱い、それをCIで追跡して遅いコンパイル時間を見つけることができます。 Rust のコンパイル時間に対する継続的ベンチマークを実装する最も簡単な方法は、Bencherを使用することです。

Bencherとは?

Bencherは、連続ベンチマーキングツールのスイートです。 パフォーマンスの後退があなたのユーザーに影響を与えたことはありますか? Bencherなら、それが起こるのを防げた可能性があります。 Bencherは、パフォーマンスの低下を_productionに到達する_前に検出し、防止することを可能にします。

  • 実行: お気に入りのベンチマーキングツールを使用してベンチマークをローカルまたはCIで実行します。 bencher CLIは単にあなたの既存のベンチマークハーネスをラップし、その結果を保存します。
  • 追跡: ベンチマークの結果を時間と共に追跡します。ソースブランチ、テストベッド、測定基準に基づいてBencherのWebコンソールを使用して結果を監視、クエリ、グラフ化します。
  • キャッチ: CIでパフォーマンスの後退をキャッチします。Bencherは最先端のカスタマイズ可能な分析を使用して、パフォーマンスの後退がProductionに到達する前にそれを検出します。

機能の後退を防ぐためにユニットテストがCIで実行されるのと同じ理由で、Bencherを使用してCIでベンチマークを実行してパフォーマンスの後退を防ぐべきです。パフォーマンスのバグはバグです!

Bencher Cloud の手順

  1. Bencher Cloud アカウントを作成する
  2. API トークンを作成し、それを秘密として CI に追加する。
  3. GitHub ActionsGitLab CI/CD のような CI のワークフローを作成する。
  4. Bencher CLI をインストールして CI ワークフローに組み込む。
  5. Rustコードをコンパイルします。CIワークフローでbencher runサブコマンドを使用し、--build-timeフラグjsonアダプターを用いてください。

Bencher Self-Hosted の手順

  1. Bencher Self-Hosted インスタンスを作成します
  2. Bencher Self-Hosted インスタンスでアカウントを作成します。
  3. API トークンを作成し、それをシークレットとして CI に追加します。
  4. GitHub ActionsGitLab CI/CD など、CI のワークフローを作成します。
  5. CI ワークフローで Bencher CLI をインストール します。CLI のバージョンが Bencher Self-Hosted インスタンスのバージョンと一致していることを確認してください。
  6. Rustコードをコンパイルします。CIワークフローでbencher runサブコマンドを使用し、--build-timeフラグjsonアダプターを用い、--hostオプションをBencher Self-HostedインスタンスのURLに設定してください。

⏱️ ビルド時間

bencher run CLI サブコマンドを使用して、--build-time フラグを指定することで、成果物のビルド時間(すなわちコンパイル時間)を追跡できます。内部的には、bencher run は結果を Bencher Metric Format (BMF) JSON として出力します。したがって、明示的に the json adapter を使用することが推奨されます。詳細については、ビルド時間を追跡する方法 を参照してください。

build-time 測定値(すなわち 秒 (s))が収集されます。ビルド時間の値(すなわち value)のみが利用可能です。lower_valueupper_value は収集されません。build-time 測定値はすべてのプロジェクトにデフォルトで作成されるわけではありません。しかし、--build-time フラグを使用する場合、この測定値は自動的にプロジェクトに作成されます。

Terminal window
bencher run --build-time --adapter json "cargo build --release"

Track your benchmarks in CI

Have you ever had a performance regression impact your users? Bencher could have prevented that from happening with continuous benchmarking.

🤖 このドキュメントは OpenAI GPT-4 によって自動的に生成されました。 正確ではない可能性があり、間違いが含まれている可能性があります。 エラーを見つけた場合は、GitHub で問題を開いてください。.