OSS Tanbou

turn .NET methods into reproducible benchmarks with automated warmup, statistics, diagnosers, and result exporters

About these scores

OSS scale score is an unbounded metric that log-compresses and weights Stars, Watchers, Forks, and Contributors. Discovery score is the current OSS scale score minus the score at discovery. Update pace is commits in the last 30 days, growth momentum is the OSS scale score difference within the recent observation window, and OSS health is a 0–100 rating based on available recency, Community Health, and release data.

Stars
11,506
Primary language
C#
License
MIT
Repository last updated
Sep 30, 2026
On this page

Overview

BenchmarkDotNet runs .NET methods as benchmark experiments and automates warmup, iteration selection, statistical aggregation, runtime/job comparisons, diagnosers, and result export. It reduces common errors in hand-written microbenchmarks and produces shareable performance artifacts.

Features and best fit

Based on official documentation; not hands-on tested · Content checked:

Key features

Define benchmarks with attributes and a benchmark runner

Mark methods with [Benchmark] and execute them through BenchmarkRunner.Run<T>(), then expand experiments with parameters, baselines, and jobs.

Sources: [1][2]

Delegate warmup, iterations, and statistical processing to the runner

BenchmarkDotNet performs pilot and warmup work, chooses measurement iterations, aggregates results, and prints summary tables.

Sources: [1]

Collect diagnostics and export performance results

Diagnosers can capture memory allocation and disassembly while exporters produce machine-readable results. Version 0.15.8 also adds an OpenMetrics exporter for Prometheus-compatible output.

Sources: [2][4]

Best fit

Fits repeatable comparisons of optimizations and runtime configurations

It is useful when .NET teams need performance regressions or implementation alternatives to be compared through the same benchmark definition and controlled conditions.

Sources: [1]

Before adoption

Run optimized Release builds rather than Debug measurements

The Getting Started guide requires Release configuration, and the README warns about non-optimized assemblies, attached debuggers, and other conditions that can make measurements unreliable.

Sources: [1][2]

Control hardware, runtime, and background load and compare relative changes

Microbenchmarks are sensitive to their surroundings, so compare baselines under the same environment rather than treating isolated numbers from different systems as equivalent.

Sources: [1]

0.15.8 includes fixes for process deadlocks and WASM trimming

The 0.15.8 release fixes process-output deadlocks and WASM generated-project trimming among other issues, so automation should pin the intended version and review release changes.

Sources: [4]

Official sources

  1. [1]BenchmarkDotNet 0.15.8 README(2026-10-04)
  2. [2]BenchmarkDotNet 0.15.8 Getting Started(2026-10-04)
  3. [3]BenchmarkDotNet 0.15.8 project targets(2026-10-04)
  4. [4]BenchmarkDotNet 0.15.8 release(2026-10-04)
  5. [5]BenchmarkDotNet MIT license(2026-10-04)
Supplemental curator note

Microbenchmarks are sensitive to their environment, so avoid treating a single run as a performance guarantee. Run optimized Release builds and compare changes under controlled runtime, hardware, power, and background-load conditions.

Try it in 3 steps

  1. 1

    Add BenchmarkDotNet 0.15.8 to a console project

    Create a benchmark console application and pin stable version 0.15.8.

    dotnet new console -n BdnDemo -f net10.0 && dotnet add BdnDemo/BdnDemo.csproj package BenchmarkDotNet --version 0.15.8
  2. 2

    Create a minimal benchmark in Program.cs

    Define one method with [Benchmark] and invoke it through 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. 3

    Run the benchmark in Release configuration

    BenchmarkDotNet requires an optimized Release build. Results are printed and stored under BenchmarkDotNet.Artifacts.

    dotnet run -c Release --project BdnDemo/BdnDemo.csproj
Check the official README

Growth

Growth trends · Last 30 days

11,506 Stars

Trend data is still being collected.

Development activity

Last 90 days · weekly

Commits (last 30 days)
35
Open PRs
39

Development activity is still being collected.

Built with

Categories and tags

GitHub data

GitHub dataView detailed GitHub data

GitHub Topics

  • benchmark
  • benchmarking
  • c-sharp
  • dotnet
  • performance
  • csharp
  • hacktoberfest
Stars
11,506
Forks
1,075
Watchers
252
Open issues
131
Contributors
271
Owner type
Organization
Primary language
C#
License
MIT
Repository last updated
Sep 30, 2026
Write a related article

Share a guide or use case for this OSS in Markdown. Articles are published after administrator approval.

Report incorrect information

Tell us if any listing information is incorrect or outdated.

After reading this page, do you know what to do next?