Powerful benchmarking in .NET
summary
Explains how BenchmarkDotNet implements robust micro-benchmarking for .NET, describing the problems it addresses (accurate measurement, benchmarking pitfalls) and detailing its features, advantages and limitations. Covers why leading .NET performance experts rely on BenchmarkDotNet and how the library works under the hood.
AI-written summary · about
chapters (50)
- 0:00Intro
- 0:54Why performance is important?
- 2:17Benchmark? Profiler?
- 2:56The Contributors
- 4:16Sample Results
- 4:32Statistics
- 5:10Multimodal distribution
- 5:26Histogram
- 5:45Expectation and reality
- 6:05Outliers
- 6:15Frequency trails
- 6:25RPlot Sample
- 7:01Exporters
- 7:34BenchmarkSwitcher
- 9:01How does it work?
- 9:37Jitting
- 10:29Pilot stage - perfect invocation count
- 11:25Result = (Result + Overhead) - Overhead
- 11:48The Overhead
- 12:44The difference
- 12:59Warmup stage
- 14:00Actual Workload
- 15:04The trap
- 16:20Setup & Cleanup public class SetupidcleanupExample
- 17:15Strategies
- 18:21Stages: Summary
- 19:04Inlining
- 20:00How to minimize loop overhead?
- 20:27How to prevent from Out-of-order execution?
- 20:55Consumer
- 21:32Why Process-level Isolation?
- 23:13Run benchmark for all JITS
- 25:00Different GC modes
- 25:47Validators
- 26:26Compare frameworks
- 27:07NET Core vs .NET vs Mono vs CoreRT
- 27:59runtimes
- 28:31Architecture: Summary
- 30:08Memory Diagnoser sample
- 30:26Memory Diagnoser results
- 32:10Hardware Performance Counters
- 32:39Hardware Counters Sample
- 33:33Harware Counters Result
- 37:12Disassembly Diagnoser: Sample
- 38:02Sample HTML report
- 38:23ASM diffs
- 39:20PMC + ASM = skids
- 40:09ETW Profiler
- 41:45Concurrency Visualizer Profiler
- 43:18Diagnosers: Summary
related talks
47mUnlocking Performance Improvements in .NET
59mWriting (in)efficient C#
54mPragmatic Performance: When to care about perf, and what to do about it
37mRock Your Code Code and App Performance for Microsoft .Net
47mSolving .NET performance issues
43mPragmatic Performance: When to care about perf, and what to do about it.
48mWhy I’m Not Leaving .NET
50mDiagnostic techniques for .NET running on Linux and within containers
