Welcome to the BenchmarkDotNet documentation

BenchmarkDotNet is a powerful .NET library for benchmarking.

Source-code is available at: Github
Pre-built packages are available at: NuGet

Status

  • Main: Join the chat at https://gitter.im/PerfDotNet/BenchmarkDotNet License NuGet
  • Docs: ChangeLog Guide for developers
  • Build: Build status: master Build status: develop

Summary

  • Standard benchmarking routine: generating an isolated project per each benchmark method; auto-selection of iteration amount; warmup; overhead evaluation; statistics calculation; and so on.
  • Easy way to compare different environments (x86 vs x64, LegacyJit vs RyuJit, and so on; see: Jobs)
  • Reports: markdown (default, github, stackoverflow), csv, html, plain text; png plots.
  • Advanced features: Baseline, Setup, Params, Percentiles
  • Powerful diagnostics based on ETW events (see BenchmarkDotNet.Diagnostics.Windows)
  • Supported runtimes: Full .NET Framework, .NET Core (RTM), Mono
  • Supported languages: C#, F# (also on .NET Core) and Visual Basic