.NET 11 のパフォーマンス改善は「11」に達した
Performance Improvements in .NET 11

Microsoft の .NET 11 では、JIT コンパイラの脱抽象化やプロファイル誘導最適化(PGO)が強化され、仮想呼び出しの直接呼び出し化とインライン展開が進んだ。境界チェックの削除、不要なアロケーションの排除、ロックの回避、SIMD の活用など、数百に及ぶマイクロ最適化が積み重なり、ランタイムとライブラリが確実に高速化。ベンチマークは .NET 10 と .NET 11 を比較し、その効果を実証している。
「ほとんどの連中は10で演奏するんだ。でもここは10が上限で、ギターも10いっぱいいっぱいだ。そこからどこに行く?どこにも行けない。だから俺たちは、崖の上からもう一押し必要なら、11にするんだ。そう、1つだけ大きい音にな。」
HNでの議論
103- tiffanyh
この記事はとても爽快な読後感でした。AI以前の時代の、堅実なエンジニアリングと文章を思い出させてくれるからです。
こういう記事は、そのうち儚く消えてしまうのではないかと危惧しています。
- lukehoban
Stephen Toub のこのような深い技術記事を私と同じくらい楽しんでいる人なら、彼が今日もう一つ、Copilot のコーディングハーネスを Node.js から Rust に移行するという記事を公開していることも知っておくとよいでしょう。これも素晴らしい読み物です。
https://github.blog/ai-and-ml/generative-ai/migrating-the-gi...
- majora2007
.NET が成し遂げた outstanding な最適化(および async ランタイム)はさておき、私が本当に楽しんだのは書き直されたエントリのセクションでした。Stephen は過去の Performance Improvement 記事の概念をすべて再掲し、最適化テクニックの層とそれらがどのように変革をもたらすかを本当に示してくれました。
- testerius
.NET が失敗したのを覚えています。デバッガがオープンソース化されていない、ホットリロードを削除する計画(ライセンスの関係で Visual Studio でのみ利用可能にする)、あるいは他の言語と比べて Visual Studio Code でのサポートが貧弱だ、といった騒動がありました。私の知る限り、VS Code が C#/.NET のファーストクラスのエディタではないことに多くの人が怒っていました。最近はどうなのかよくわかりません。
- adzm
ランタイム async は確かに興味深い展開です。これがどうなるか本当に楽しみです。
- rsalus
これらのブログ記事のおかげで、私はすっかり dotnet の伝道師になってしまいました。フレームワークと言語が大好きです。
- AlexErrant
素朴な疑問:非システム言語の開発者もアセンブリを知る/読むべきですか?
; Arm64
--- .NET 10
+++ .NET 11
@@ -13,8 +13,6 @@
ble G_M000_IG04
G_M000_IG03:
- cmp w1, w2
- bhs G_M000_IG05
str wzr, [x0, w1, UXTW #2]
G_M000_IG04:
@@ -25,4 +23,4 @@
bl CORINFO_HELP_RNGCHKFAIL
brk #0
-; Total bytes of code 68
+; Total bytes of code 60
C#/F# はそこそこよく知っていますが、上のコードが何を言っているのか理解するために、古い教科書を引っ張り出して学ぶ理由はあるのでしょうか?
- momocowcow
casey muratori が次のことについて君と話したがっているよ :))
// Approximately what the JIT generates
if (animal?.GetType() == typeof(Dog))
{
((Dog)animal).Speak(); // devirtualized, inlinable
}
else
{
animal.Speak(); // original virtual call, hopefully rare
}