Repolode
dotnet

dotnet/BenchmarkDotNet

.NETライブラリ。C#のメソッドを、ウォームアップや統計情報、結果レポート付きの再現可能なベンチマークに変換できます。

スター
11,526
フォーク
1,079
未解決の Issue
168
最終コミット
昨日

これは何?

BenchmarkDotNetを使うと、ユニットテストを書くような感覚で、属性を付けるだけで通常のメソッドをベンチマークにできます。手作業では間違いやすいパイロット実行、ウォームアップや計測のイテレーション、デッドコード除去への対策に加え、デバッガーの接続、DEBUGビルド、仮想化環境などを警告する環境チェックもライブラリが処理します。

[Params]でベンチマークにパラメーターを指定したり、ベースラインと比較したりできるほか、.NET Framework、.NET Core、.NET 5+、Mono、NativeAOTなど複数のランタイムで実行できます。Mean、Error、StdDevなどの統計情報を含むサマリーテーブルが出力され、Markdown、HTML、CSV、XML、JSON、グラフ形式でエクスポートできます。メモリ診断や逆アセンブリリストにも対応しています。

BenchmarkDotNetはWindows、Linux、macOSで動作し、C#、F#、Visual Basicに対応しています。対応アーキテクチャとしてx86、x64、ARM、ARM64、Wasm、LoongArch64が挙げられています。

主な機能

  • 01[Benchmark]や[Params]などの属性を使って、メソッドをベンチマークにできます。
  • 02パイロット実行やウォームアップを自動で処理し、統計情報に基づいてイテレーション数を設定します。
  • 03ベースラインとの比較や、複数の.NETランタイムでの実行が可能です。
  • 04結果をMarkdown、HTML、CSV、JSON、グラフ形式でエクスポートできます。
  • 05マネージドおよびネイティブのメモリ割り当てを計測し、逆アセンブリリストを確認できます。

ユースケース

  • .NETサービスのホットパスに対するコード変更で、実際に性能が向上したかを測定する。
  • ハッシュ関数など、異なるアルゴリズムやライブラリAPIの性能を複数のランタイムで比較する。
  • .NETのバージョン間やNativeAOTビルド間で、性能の低下がないか確認する。
  • 再現可能な性能測定を標準的なレポート形式でチームメンバーと共有する。

クイックスタート

  1. 1

    .NET コンソールアプリケーションを作成し、BenchmarkDotNet NuGet パッケージを追加します

  2. 2

    クラス内のメソッドに [Benchmark] を付け、コンソールアプリのエントリポイントからベンチマークを実行します

使う前に知っておきたいこと

  • ベンチマークはコンソールアプリケーションから実行する必要があります。他のアプリケーションの種類はサポートされていません。
  • BenchmarkDotNet は適切なベンチマーク設計の知識に代わるものではなく、結果も慎重に解釈する必要があります。

トピック

よくある質問

BenchmarkDotNet とは?
.NETライブラリ。C#のメソッドを、ウォームアップや統計情報、結果レポート付きの再現可能なベンチマークに変換できます。 BenchmarkDotNetを使うと、ユニットテストを書くような感覚で、属性を付けるだけで通常のメソッドをベンチマークにできます。手作業では間違いやすいパイロット実行、ウォームアップや計測のイテレーション、デッドコード除去への対策に加え、デバッガーの接続、DEBUGビルド、仮想化環境などを警告する環境チェックもライブラリが処理します。
BenchmarkDotNet は無料で使えますか?ライセンスは?
BenchmarkDotNet は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
BenchmarkDotNet は今もメンテナンスされていますか?
活発にメンテナンス中。BenchmarkDotNet の最終コミットは 2026年11月6日 です。
BenchmarkDotNet は何に使えますか?
.NETサービスのホットパスに対するコード変更で、実際に性能が向上したかを測定する。 ハッシュ関数など、異なるアルゴリズムやライブラリAPIの性能を複数のランタイムで比較する。 .NETのバージョン間やNativeAOTビルド間で、性能の低下がないか確認する。 再現可能な性能測定を標準的なレポート形式でチームメンバーと共有する。
BenchmarkDotNet のインストール方法は?
.NET コンソールアプリケーションを作成し、BenchmarkDotNet NuGet パッケージを追加します クラス内のメソッドに [Benchmark] を付け、コンソールアプリのエントリポイントからベンチマークを実行します
BenchmarkDotNet はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/dotnet/BenchmarkDotNet

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト