Start Debugging

タグ: performance

47 件 · ページ1/5

C# の Span<T> とは何か、そしてどんなときに実際にコードを速くするのか?
Span<T> はスタック上にのみ存在する ref struct で、すでに自分が所有しているメモリを指すため、裏付けとなるアロケーションを持ちません。コードが速くなるのは正確に 3 つの状況だけです: ヒープのバッファを stackalloc に置き換える、コピーせずにスライスする、JIT が境界チェックを除去するタイトなループ。それ以外の場所では何も変わらず、await をまたぐとコンパイルできません。
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 の不在です。ここに完全な収支を示します。
次へ