# BenchmarkDotNet

> BenchmarkDotNet is an open source, self-hosted code benchmarking tool from .NET Foundation, scripted in C#, F#, Visual Basic.

- Canonical: https://perf.jmeter.ai/tools/benchmarkdotnet/
- Official: https://benchmarkdotnet.org/
- Source: https://github.com/dotnet/BenchmarkDotNet
- Vendor: .NET Foundation
- Category: Code Benchmarking
- License: Open Source — Free; MIT License.
- Deployment: Self-hosted
- Status: Active
- Scripting: C#, F#, Visual Basic
- Protocols: None recorded
- OS support: Windows, macOS, Linux
- First released: 2013

- Last verified: 2026-08-12

## What it is
BenchmarkDotNet turns .NET methods into isolated benchmarks with warmup, statistical analysis, diagnosers, and generated reports. It supports C#, F#, and Visual Basic projects across modern .NET runtimes and operating systems.

## Choose it when
- Repeatable method, function, and command runtime benchmarks
- Teams that prefer open-source licensing and self-hosting options
- Groups comfortable scripting in C#, F#, Visual Basic

## Look elsewhere when
- Teams unwilling to operate generators, results storage, and scaling

## Architecture
BenchmarkDotNet is operated as a code benchmark harness with C#, F#, Visual Basic. It isolates functions, methods, or commands and applies repeated measurements, warmups, and statistical comparison rather than generating protocol traffic.

## Pricing
Free; MIT License.

## Compare

## FAQ
### Who is BenchmarkDotNet for?
BenchmarkDotNet is best for developers measuring the runtime and regressions of application code. It is open source, so teams can self-host and extend it. Vendor: .NET Foundation. Deployment model: self-hosted. Free; MIT License. Confirm details against the official site and a short proof-of-concept in your environment.

### How does BenchmarkDotNet differ from Criterion.rs?
Compared with Criterion.rs, scripting centers on C#, F#, Visual Basic rather than Rust. BenchmarkDotNet lists protocols not recorded; Criterion.rs lists not recorded. Status is active versus active. Use the Test Rig to compare full specs side by side before a proof-of-concept.

### What scripting language and concurrency model does BenchmarkDotNet use?
BenchmarkDotNet uses C#, F#, Visual Basic for scripting or scenario definition. Runtime model: protocol-oriented virtual users configured through the product workflow. OS support: Windows, macOS, Linux. Protocols: not recorded. Match these to how your team already authors tests and which systems you must drive under load.

### What is the cloud or enterprise path for BenchmarkDotNet?
BenchmarkDotNet is a focused benchmark harness rather than a browser or enterprise load controller. Use its measured workload and reporting model to isolate database or code performance before broader system testing. As open source, commercial support or hosted siblings may exist separately. Check the official site. Pricing note: Free; MIT License.

### What are known limitations of BenchmarkDotNet?
BenchmarkDotNet limitations to weigh: self-hosted tools require you to provision, scale, and observe load generators yourself; protocol coverage is not fully recorded in this catalog entry. Status: active. Always validate against your target protocols and scale with a proof-of-concept. Confirm details against the official site and a short proof-of-concept in your environment.

---
Curated by NaveenKumar Namachivayam (QAInsights) · methodology: https://perf.jmeter.ai/about/#methodology · corrections: https://github.com/QAInsights/Performance-Testing-Tools/issues/new?title=Tool%20submission%3A%20&body=Tool%20name%3A%20%0AOfficial%20URL%3A%20%0AWhat%20should%20be%20added%20or%20corrected%3F%20%0A