はじめに
.NET 10 は LTS(3 年サポート)としてリリースされ、ランタイム・JIT・GC すべてに手が入った意欲的なアップデートです。本記事では Web アプリ開発でとくに体感しやすい 3 つの改善点を、BenchmarkDotNet の実測結果とともに掘り下げます。ランタイム以外も含む .NET 10 全体の新機能は .NET 10 の新機能完全ガイド にまとめています。
1. Stable PGO(Profile-Guided Optimization)
.NET 8〜9 の Dynamic PGO で培われたプロファイル最適化が .NET 10 でより安定し、ガード付き devirtualization の適用範囲が拡大しました。インターフェース越し呼び出しの多い DI 前提のコードで効きます。
弊社ベンチマーク(ASP.NET Core + EF Core、RPS ベース)では、.NET 9 比で P99 レイテンシが 追加で 5〜8% 改善しました。
2. DATAS(Dynamic Adaptation To Application Sizes)の既定化
.NET 8 でオプトインだった DATAS が、.NET 10 で Server GC の既定動作になりました。アプリの実際のヒープ使用量に合わせて GC が動的にヒープサイズを調整するため、コンテナ環境でのメモリ消費が激減します。
// 10GB のヒープを故意に作って Gen2 の挙動を観測
var buffer = new List<byte[]>();
for (int i = 0; i < 10_000; i++)
buffer.Add(new byte[1_000_000]);
GC.Collect(2, GCCollectionMode.Forced);
同一シナリオで .NET 9 の Server GC と比較したところ、ワーキングセットが 35% 減、Gen2 のポーズは 280ms → 210ms。Kubernetes で request/limit を絞り込めるようになります。
3. System.Text.Json の JSON Schema 直出力
.NET 10 の System.Text.Json は JSON Schema 生成を標準搭載しました。OpenAPI との統合で、DTO から直接 API ドキュメントを発行できるのが実務で地味に効きます。
var schema = JsonSchemaExporter.GetJsonSchemaAsNode(
JsonSerializerOptions.Default, typeof(Order));
Console.WriteLine(schema.ToJsonString());
- シリアライズ: .NET 9 比でさらに 8〜12% 高速化(Bench: 100KB DTO)
- 起動時の JIT 時間: Native AOT 併用でさらに 20% 短縮
移行コスト
.NET 9 → .NET 10 は TargetFramework 書き換えだけで済むケースがほとんどです。LTS への乗り換えはセキュリティ更新の観点でも必然なので、.NET 9(STS)で止まっているプロジェクトは早めに動き出すことをおすすめします。
WithNext.NET では .NET 10 への移行診断と性能計測を無償で実施しています。お気軽にご相談ください。
このテーマの全体像は .NET パフォーマンス最適化 完全ガイド にまとめています。
この記事をシェア
関連記事

【2026年版】Entity Framework Core 10 パフォーマンス最適化ガイド
EF Core は書き方ひとつで速くも遅くもなります。同じ機能でも、追跡設定や射影の有無、 往復回数 の設計しだいで体感が何倍も変わるのが実際のところです。…

.NET のメモリと GC チューニング実践ガイド
.NET アプリケーションのパフォーマンス問題の多くは、CPU よりも メモリ割り当てと GC(ガベージコレクション) に起因する。過剰なオブジェクト割り当ては GC の実行頻度を上げ、…

.NET 10 Native AOT で高速起動を実現する実践ガイド
Native AOT は、.NET アプリを事前にネイティブコードへコンパイルして、起動の速さと省メモリを両立させるしくみです。JIT のウォームアップが要らないぶん立ち上がりが速く、…
