The engine, opened up
A deep dive into the NBenchmark measurement engine, from the worker protocol and clock probing to optional-stopping correction.
Read the postWriting
Deep dives into NBenchmark - adaptive measurement, honest statistics, outlier handling, and the traps that make benchmarking .NET harder than it looks.
A deep dive into the NBenchmark measurement engine, from the worker protocol and clock probing to optional-stopping correction.
Read the postExtending NBenchmark with custom reporters, outlier detectors, and OpenTelemetry integration for advanced observability.
Comparing performance across .NET versions to make data-driven upgrade decisions.
Managing instance lifetimes and shared state to prevent contamination and ensure statistically valid results.
An exploration of process isolation, runtime profiles, and why measuring in-process is a recipe for misleading results.
A field guide to diagnosing impossible benchmark results, from clock resolution issues to state contamination.
Turning performance measurements into enforceable gates using CLI regression limits and test-framework integrations.
Reducing environmental interference using CPU affinity, process priority, and thread control for maximum measurement precision.
Using multiple launches and paired ratios to distinguish between a lucky run and a real performance regression.
Measuring performance as a function of input using parameterized benchmarks and categories to organize scaling sweeps.
Moving beyond the terminal with JSON, Markdown, and CSV reporters to make performance data shareable and archivable.
How NBenchmark measures allocations and manages GC behavior to balance real-world noise with measurement precision.
Learn how NBenchmark uses ops-per-sample calibration to accurately measure sub-microsecond operations that finish faster than the system clock can notice.
Page 1 of 2