NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #688 most downloaded on NuGet
Powerful .NET library for benchmarking
Last release 10 months ago
30 Nov 2025
Release timing varies
gaps range from 2 weeks to 10 months
Rarely documented
notes for 9 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
127 years old
78 releases · first in 1900
This release adds OpenMetrics exporter support for Prometheus-compatible metrics export, improves the Roslyn analyzers with multi-target support and b
This release adds OpenMetrics exporter support for Prometheus-compatible metrics export, improves the Roslyn analyzers with multi-target support and better type checking, and fixes several bugs including process deadlocks and WASM trimming issues.
NO_COLOR environment variable support for disabling console colors (#2870)[DynamicallyAccessedMembers] attribute polyfill (#2883)AsyncProcessOutputReader for cleaner process output handling (#2878)BenchmarkRunner.Run<T>() with arguments on invalid benchmark type (#2880, fixes #2724)#if-#endif preprocessor directives using PolySharp polyfills (#2881)Full Changelog: v0.15.7...v0.15.8
One column per quarter.
This release introduces Roslyn analyzers to catch incorrect BenchmarkDotNet usage at compile time, improves .NET Framework version detection, and upda
This release introduces Roslyn analyzers to catch incorrect BenchmarkDotNet usage at compile time, improves .NET Framework version detection, and updates OS detection support.
[Arguments], [Params], and [ParamsAllValues] attribute usage[GenericTypeArguments] requirementsBenchmarkRunner.Run invocationsTargetFrameworkAttribute (#2682)OsBrandHelperTestCaseFilter for the test adapterrelease.yamlFull Changelog: v0.15.6...v0.15.7
Add documentation for breaking changes related to disassembler native dependencies
This release adds ref struct parameter support for [ArgumentsSource], fixes Native AOT runtime moniker resolution, and upgrades to Perfolizer 0.6.0 with the new Pragmastat statistical engine.
[ArgumentsSource] attribute, enabling Span<T> and ReadOnlySpan<char> parameters (#2849)Full Changelog: v0.15.5...v0.15.6
Nothing published for this version
This release fixes job naming consistency when using --runtimes , clamps histogram bin bounds to avoid confusing negative values, and reduces output d
This release fixes job naming consistency when using --runtimes, clamps histogram bin bounds to avoid confusing negative values, and reduces output directory clutter by filtering unnecessary runtime and satellite assembly files.
SimpleJobAttribute and --runtimes CLI option (#2841)
workflow_dispatch for test workflow (#2835)Full Changelog: v0.15.4...v0.15.5
This release fixes issues with ParamsSource attribute resolution in inheritance scenarios and corrects a MSBuild syntax error in the TestAdapter.
This release fixes issues with ParamsSource attribute resolution in inheritance scenarios and corrects a MSBuild syntax error in the TestAdapter.
[ParamsSource] to resolve overridden methods and properties in derived classes (#2832)TestTfmsInParallel property that prevented Visual Studio from loading projects (#2831)Full Changelog: v0.15.3...v0.15.4
Deprecated .WithNuget() job extension in favor of .WithMsBuildArguments()
This release brings .NET 10 NativeAOT instruction set support, improved CPU detection on Windows when WMIC is unavailable, test adapter filtering, and numerous bug fixes.
.WithNuget() job extension in favor of .WithMsBuildArguments() (#2812)IsNetCore and IsNativeAOT detection for single-file apps without AOT (#2799)--nodeReuse:false for dotnet CLI commands to improve build isolation (#2814)ArgumentsSource on external types not working if the argument type is not primitive (#2820)EtwProfiler for file paths slightly under 260 characters (#2808)EventProcessor.OnEndValidationStage not being called when critical validation errors occur (#2816)XmlException thrown when TextReader.Null is passed to AppConfigGenerator (#2817)NativeMemoryLogParser program name matching (#2795)BuildPlots.RMemoryDiagnoser tests on macOS (#2813)TimeConsumingBenchmark class to reduce test timeBenchmarkDotNetDiagnosers package version (#2805)GenerateProgramFile (#2802)Full Changelog: v0.15.2...v0.15.3
This release improves memory allocation measurement accuracy and adds new features for job ordering and runtime validation.
This release improves memory allocation measurement accuracy and adds new features for job ordering and runtime validation.
JobOrderPolicy option to sort jobs in numeric order instead of ordinal order (#2770)RuntimeValidator to detect benchmarks with null runtime configuration (#2771)--force-clone for docs-fetch in generate-gh-pages workflowworkflow_dispatch for publish-nightly workflowdocs/_changelog folder from main branch (migrated to docs-changelog branch)Full Changelog: v0.15.1...v0.15.2
A maintenance release with improved cross-platform compatibility, a new feature for referencing external types in source attributes, and several bug f
A maintenance release with improved cross-platform compatibility, a new feature for referencing external types in source attributes, and several bug fixes for ARM CPUs and unsupported operating systems.
[ArgumentsSource] and [ParamsSource] to reference methods in other types via new constructor overload: [ArgumentsSource(typeof(MyClass), nameof(MyClass.Values))] (#2748)REASON_CONTEXT to use proper union structure (#2745, #2756)Console.CancelKeyPress crash on platforms that don't support it (Android, iOS, tvOS, WASM) (#2739, #2741)CpuInfo.Unknown (#2740).slnx solution file format when searching for solution files (#2764)ExporterBase.GetArtifactFullName accessibility modifier more permissivedocs-changelog branch (#93d12c42)Full Changelog: v0.15.0...v0.15.1
Fixed known high severity vulnerabilities in dependencies
BenchmarkDotNet v0.15.0 brings .NET 10 support, a new WakeLock feature to prevent system sleep during benchmarks, improved engine internals for more consistent measurements, and numerous bug fixes and improvements.
[WakeLock] attribute and --wakeLock CLI option to prevent the system from entering sleep mode while benchmarks are running (#2670)RuntimeMoniker.Net10, NativeAot10, and Mono10 with full toolchain support (#2642)Platform.RiscV64 for RISC-V 64-bit architecture (#2644, #2647)required properties (#2579)ConfigOptions.DisableParallelBuild option to force sequential builds (#2725)ThreadingDiagnoser and ExceptionDiagnoser now support configuration to hide columns when metrics have no values (#2673)IEngineStageEvaluator for more consistent instruction location and simpler code (#2688)InProcessNoEmitRunner with NativeAOT (#2702)ParamsAttribute.Values setter is now protected instead of private (#2716)ClrMdV3Disassembler (#2488)Perfonar exporters replacing Phd exportersIlcGenerateCompleteTypeMetadata and updated flag names (#2616)[PhdExporter] → [PerfonarExporter], PhdJsonExporter → PerfonarJsonExporter, PhdMdExporter → PerfonarMdExporterilcPackages instead of deprecated ilcPath (#2657)SnapshotProfilerBaseFull Changelog: v0.14.0...v0.15.0
Full changelog: https://benchmarkdotnet.org/changelog/v0.14.0.html
Full changelog: https://benchmarkdotnet.org/changelog/v0.14.0.html
BenchmarkDotNet.Diagnostics.dotMemory #2549: memory allocation profile of your benchmarks using dotMemory, see @BenchmarkDotNet.Samples.IntroDotMemoryDiagnoserBenchmarkDotNet.Exporters.Plotting #2560: plotting via ScottPlot (initial version)IntermediateOutputPath, OutputPath, and OutDir properties to the dotnet build command. This change forces all build outputs to be placed in a new directory generated by BenchmarkDotNet, and fixes many issues that have been reported with builds. You can also access these paths in your own .csproj and .props from those properties if you need to copy custom files to the output.UseArtifactsOutput.DotNetCliBuilder removed retryFailedBuildWithNoDeps constructor option.DotNetCliCommand removed RetryFailedBuildWithNoDeps property and BuildNoRestoreNoDependencies() and PublishNoBuildAndNoRestore() methods (replaced with PublishNoRestore()).Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →