← 피드로
Originally published on PrepStack. Cross-posting the TL;DR here.
We run a multi-tenant analytics SaaS on ASP.NET Core (~110k MAU, ~3,200 req/sec peak, ~95k LOC) and benchmarked .NET 9, .NET 10 (current LTS), and .NET 11 previews on the same harness and the same production workload — not synthetic microbenchmarks.
The numbers (9 -> 10, GA, near-zero code changes)
Metric .NET 9 .NET 10 (GA) .NET 11 (preview) Throughput / instance baseline +11% +6-9% (early) API p95 132 ms 120 ms -5-7% (early) Working set / instance 415 MB 380 MB a few MB less AOT cold start 84 ms 61 ms ~55 ms (early) AOT image size 41 MB 33 MB ~30 MB (early) Language C# 13 C# 14 C# 15 (preview)What it covers
- Runtime/JIT free wins (AVX10.2, devirtualization, loop opts)
- GC/memory (DATAS right-sizing the heap)
- ASP.NET Core built-in OpenAPI + minimal-API validation
- C# 14: the
fieldkeyword + extension members (~700 LOC deleted) - Native AOT startup & container size
-
Microsoft.Extensions.AIbecoming first-class - The actual 9 -> 10 migration (~1.5 engineer-days for 95k LOC)
Verdict: upgrade to the LTS for the free, measured wins; pilot the .NET 11 preview in CI, ship after GA (Nov 2026). And benchmark your hot paths — generic benchmarks don’t reflect your workload.
Full post with before/after code and the decision checklist: https://prepstack.co.in/blog/dotnet-11-vs-dotnet-10-benchmarked-production
답글 남기기