Sitemap
Bill Musgrave

Bill Musgrave

Press enter or click to view image in full size
.Net 11 Performance

DotNet: Version 11 Performance

4 min readOct 5, 2026

--

Annual Performance Analysis

It’s that time of year, when Microsoft’s elves come out with a new version of .Net with that new code smell. My favorite aspect is the annual reading of Stephen Taub’s performance gain analysis; the how they did it.

Get Bill Musgrave’s stories in your inbox

Join Medium for free to get updates from this writer.

I enjoy reading each and every micro-optimization the .Net team comes up with. But if you are impatient and don’t want to read Stephen’s article, I’ve boiled down this years performance to the highlights below:

High‑Level Categories of Enhancements in .NET 11

Each category includes a short sentence describing the theme, followed by subcategories with one‑sentence explanations.

1. JIT (Just‑In‑Time Compiler) Improvements

Theme: The JIT becomes smarter at removing overhead, eliminating allocations, and optimizing hot paths.

  • Devirtualization / Guarded Devirtualization (GDV) The JIT more often converts virtual/interface calls into direct calls, enabling inlining and major speedups.
  • Escape Analysis & Stack Allocation More temporary objects are proven not to escape and are stack‑allocated or eliminated entirely.
  • Nullable Boxing Optimization Boxing of nullable types is reduced or eliminated when the boxed value doesn’t escape.
  • Enumerator Optimization (CEA) Foreach loops over common collection patterns avoid heap allocations for enumerators.
  • Generic Virtual Method (GVM) Devirtualization Generic interface calls are now devirtualized and inlined in more cases, eliminating allocations and indirect calls.
  • Improved Inlining Heuristics Intrinsic types (Span, Vector) get more aggressive inlining budgets, exposing more optimization opportunities.
  • Delegate Layout Optimization Delegates are smaller and faster due to reduced field count and better field ordering.
  • Tier 0 Improvements Some optimizations previously only in Tier 1 (optimized code) now apply in Tier 0, reducing startup overhead.

2. GC (Garbage Collector) Improvements

Theme: Reduced allocations and better escape analysis reduce GC pressure and improve throughput.

  • Fewer Temporary Allocations Eliminated boxing, enumerators, and short-lived objects reduce GC frequency.
  • Stack Allocation of Delegates / Closures More closures and delegates avoid heap allocation entirely.

3. Runtime Infrastructure Improvements

Theme: Core runtime operations (delegates, type checks, interface dispatch) become cheaper.

  • Delegate Representation Simplification Delegates shrink by 8 bytes on CoreCLR, improving memory footprint and invocation speed.
  • Better Type Information Preservation The JIT preserves exact type info through transformations, enabling more devirtualization.
  • Improved Interface Dispatch Interface calls are optimized more aggressively, especially in generic scenarios.

4. Async / Await Improvements

Theme: Async state machines and continuations get faster and allocate less.

  • Reduced Async Overhead Async methods generate less overhead in state machines and continuations.
  • Better Exception Handling Paths Async exception paths are optimized to reduce cost in common scenarios.

5. Collections & LINQ Improvements

Theme: Common operations on collections and LINQ pipelines run faster and allocate less.

  • Enumerator Allocation Removal Foreach loops over arrays, read-only arrays, and common patterns avoid heap allocations.
  • Faster Equality Comparisons EqualityComparer<T> avoids boxing and unnecessary allocations.
  • Improved Generic Collection Operations Generic virtual methods in collections are devirtualized and inlined.

6. Math, SIMD, and Numerics Improvements

Theme: More operations are vectorized or mapped to hardware intrinsics.

  • Better Intrinsic Recognition Span, Vector, and numeric operations inline more often and map to SIMD instructions.
  • Instruction Fusion Multiple instructions are fused into single CPU instructions where possible.

7. I/O and System Libraries Improvements

Theme: Lower-level operations in System.IO, hashing, caching, and tensors get faster.

  • Hashing Improvements System.IO.Hashing operations are faster due to better inlining and fewer allocations.
  • Caching Improvements System.Runtime.Caching benefits from JIT optimizations and reduced overhead.
  • Tensor Operations System.Numerics.Tensors sees better vectorization and reduced overhead.

8. NativeAOT Improvements

Theme: NativeAOT gets better devirtualization and generic method resolution.

  • Fat Pointer Optimization Generic virtual method resolution is deferred to allow devirtualization first.
  • Better Inlining of GVMs NativeAOT now inlines more generic virtual calls, reducing code size and improving speed.

9. ReadyToRun Improvements

Theme: Precompiled code benefits from better generic method resolution.

  • More Non‑Shared GVM Devirtualization ReadyToRun can resolve more generic virtual calls at compile time.

10. General Micro-Optimizations

Theme: Hundreds of tiny improvements accumulate into measurable throughput gains.

  • Bounds Check Removal More loops eliminate redundant bounds checks.
  • Constant Folding More comparisons and branches fold into constants.
  • Redundant Check Hoisting Checks move out of loops to reduce per-iteration cost.
  • Syscall Avoidance Some operations avoid system calls entirely.

.NET 11’s performance improvements center on smarter JIT optimizations, reduced allocations, better devirtualization, faster async, improved collections, enhanced SIMD usage, and major gains in generic and interface dispatch — resulting in faster, smaller, and more efficient applications across the board.

If your Agile feels more sluggish than adaptive, or your DevOps pipeline isn’t delivering the speed you expect — I can help. I’ve spent 30 years leading software delivery transformations that align teams, tools, and outcomes. Learn more at https://www.musgrave.com .

--

--