C# の ref T ループと Span<T> インデックスの比較: .NET 10 で Span 版が同等以上に速い理由
.NET 10 では、span.Length を上限にした単純な for ループ span[i] は、境界チェックなし、ストレングスリダクション済み、カウントダウン形式のループにコンパイルされます。int インデックスで手書きした Unsafe.Add(ref r, i) ループは符号拡張と加算方向の比較が残り、計測では 2 から 5% 遅くなりました。.NET 10.0.10 の arm64 と x64 のベンチマークと JIT 逆アセンブルを紹介します。