ページ内ナビ
概要
BenchmarkDotNetは.NET methodをbenchmark experimentとして実行し、warmup、iteration数調整、統計集計、runtime/job比較、diagnoser、result exportを自動化するlibraryです。手書きmicrobenchmarkで起きやすい測定ミスを減らし、結果を共有可能なartifactとして残せます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
methodへBenchmark attributeを付けて測定experimentを定義する
測定対象methodへ[Benchmark]を付け、BenchmarkRunner.Run<T>()で実行する形から始められます。parameterやbaseline、jobを追加して比較条件を拡張できます。
warmup・iteration・統計処理をrunnerへ任せる
BenchmarkDotNetはpilot、warmup、measurement iterationを調整し、測定結果の統計値を集約してsummary tableを生成します。
出典:[1]
向いている用途
optimization前後やruntime差を再現可能なexperimentとして比較したい場合に向く
performance regressionの調査や実装候補の比較を、同じbenchmark definitionと環境条件で繰り返したい.NET projectに適します。
出典:[1]
導入前の確認
Release configurationで実行しDebug buildの数値を使わない
Getting Startedはbenchmark applicationをRelease configurationで実行することを要求します。READMEもnon-optimized assemblyやdebugger等、測定を乱す条件を警告対象にしています。
hardware・runtime・background loadを固定して相対比較する
microbenchmarkは周辺環境の影響を受けるため、異なるmachineやruntimeの単発値を直接比較せず、同一条件でbaselineとの差分を追う運用が重要です。
出典:[1]
0.15.8はprocess deadlockとWASM trimming等のbug fixを含む
0.15.8はprocess output読取時のdeadlockやWASM project trimming等を修正しているため、古い0.15系から利用する場合はrelease noteを確認してversionを固定します。
出典:[4]
参考にした公式資料
- [1]BenchmarkDotNet 0.15.8 README(2026-10-04)
- [2]BenchmarkDotNet 0.15.8 Getting Started(2026-10-04)
- [3]BenchmarkDotNet 0.15.8 project targets(2026-10-04)
- [4]BenchmarkDotNet 0.15.8 release(2026-10-04)
- [5]BenchmarkDotNet MIT license(2026-10-04)
編集部からの補足
microbenchmarkは測定環境の影響を受けやすいため、単発の数値を性能保証として扱わない方が安全です。Release buildで実行し、同じruntime・hardware・電源状態など条件を固定して差分を比較してください。
3ステップで試す
- 1
console projectへBenchmarkDotNet 0.15.8を追加する
benchmark用console applicationを作成し、stable 0.15.8をversion固定で追加します。
dotnet new console -n BdnDemo -f net10.0 && dotnet add BdnDemo/BdnDemo.csproj package BenchmarkDotNet --version 0.15.8 - 2
最小benchmarkをProgram.csへ作成する
[Benchmark]を付けたmethodを一つ用意し、BenchmarkRunnerから実行できるようにします。printf 'using BenchmarkDotNet.Attributes;\nusing BenchmarkDotNet.Running;\nBenchmarkRunner.Run<Bench>();\npublic class Bench { [Benchmark] public int Sum() => Enumerable.Range(1, 100).Sum(); }\n' > BdnDemo/Program.cs - 3
Release configurationでbenchmarkを実行する
BenchmarkDotNetはoptimized Release buildで実行します。結果はconsoleとBenchmarkDotNet.Artifactsへ出力されます。
dotnet run -c Release --project BdnDemo/BdnDemo.csproj
成長
成長の推移 · 直近30日
11,506 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 35
- Open PR
- 39
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
GitHubデータ
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Cypress51,043 Stars
共通タグ 1件 · 共通カテゴリ 2件
browser向けE2E・component testをinteractive runnerとCLIから実行する
TypeScript - Jest45,457 Stars
共通タグ 1件 · 共通カテゴリ 2件
assertion・mock・watch・snapshot・worker isolationを一つのCLIへまとめるJavaScript testing framework
TypeScript - Appium22,040 Stars
共通タグ 1件 · 共通カテゴリ 2件
WebDriver互換APIでAndroid・iOS・desktop appのE2E testを自動化する
TypeScript - jsdom21,692 Stars
共通タグ 1件 · 共通カテゴリ 2件
Node.js上でDOM・HTML標準のsubsetを再現し、testやscrapingに使う
JavaScript - Catch221,504 Stars
共通タグ 1件 · 共通カテゴリ 2件
C++の単体テスト・BDD・簡易ベンチマークを同じテスト実行環境で記述し、CMake/CTestへ組み込む
C++ - Vitest17,180 Stars
共通タグ 1件 · 共通カテゴリ 2件
Viteのtransform/configを共有しNode・DOM・Browser Modeを一つのtest frameworkで扱う
TypeScript
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。