Start Debugging

performance

82 件 · ページ4/9

ASP.NET Core 11 の Minimal API に出力キャッシュを追加する方法

ASP.NET Core 11 の Minimal API における出力キャッシュの完全な実践ガイド:AddOutputCache と UseOutputCache、エンドポイントと MapGroup での CacheOutput、名前付きポリシーとベースポリシー、Expire、VaryByQuery と VaryByHeader、EvictByTagAsync によるタグベースの無効化、キャッシュスタンピード対策、ETag による再検証、そして Redis バッキングストア。

.NET の PGO とは何か、そして有効化する必要はあるのか?

PGO(プロファイルに基づく最適化)は、.NET の JIT がワークロードで実際に通る型や分岐に合わせてホットなコードを特化させる仕組みです。Dynamic PGO は .NET 8 以降デフォルトで有効なので、.NET 8 以降では有効化する必要はありません。PGO が何をするのか、その効果をどう確認するのか、そして設定に手を入れる数少ないケースを解説します。

階層型コンパイルとは何か、どう捉えればよいのか?

階層型コンパイルは、.NET の JIT に各メソッドを2回コンパイルさせます。まずアプリを起動させるために高速かつ未最適化で、次にランタイムがメソッドをホットだと認識した時点で完全な最適化を施して再度コンパイルします。本記事では tier 0、tier 1、オンスタック置換、Dynamic PGO がどう組み合わさるか、そしてそれらをどう観測し調整するかを解説します。
2026-06-20 csharpdotnetasync

ValueTask<T> とは何か、そしていつ使う価値があるのか

ValueTask と ValueTask<T> は、同期的に完了する場合に Task をヒープ割り当てせずに非同期メソッドが結果を返せるようにする構造体です。利点は、待機せずに完了することが多いホットパスで割り当てが 1 つ減ることです。代償は厳格な await-once 契約です。この型が実際に何であるか、どう動作するか、そしてその価値を発揮する狭い範囲のケースを解説します。

Native AOT とは何か、そして何を犠牲にするのか?

Native AOT は .NET アプリを JIT のない単一の自己完結型ネイティブバイナリにコンパイルし、高速な起動と小さなメモリフットプリントを手に入れます。その代償は、ビルド時の C ツールチェーン、遅くなるパブリッシュ、RID ごとのビルド、リフレクションや Reflection.Emit の不可、必須のトリミング、そして Dynamic PGO の不在です。ここに完全な収支を示します。
前へ 次へ