.NET 11:比十更响的性能升级
Performance Improvements in .NET 11

文章借用电影《This Is Spinal Tap》中“音量调到十一”的经典桥段,生动比喻 .NET 11 在性能上的突破。作者指出,.NET 11 并非虚构的夸张,而是通过移除边界检查、减少内存分配、优化 JIT 编译器中的去抽象(Deabstraction)以及利用 PGO 技术,实现了实实在在的加速。这些微优化累积起来,让运行时和库的速度显著提升。文章详细展示了 BenchmarkDotNet 的测试环境设置,并深入探讨了 JIT 如何通过内联和去虚拟化将抽象代码转化为高效的机器指令,证明了 .NET 11 确实是“更响”的一代。
这是 .NET 11,它更响了一点,因为我们在让运行时和库变得更快方面又投入了一年的性能优化工作。
HN 评论区
112- tiffanyh
这篇文章读起来让人耳目一新,因为它让我想起了前 AI 时代那些扎实的工程实践和写作风格。
我担心这类文章可能会变得昙花一现。
- lukehoban
对于像我一样喜欢 Stephen Toub 这类深度技术文章的人来说——他今天还发布了另一篇关于将 Copilot 代码生成框架从 Node.js 迁移到 Rust 的文章。同样值得一读。
https://github.blog/ai-and-ml/generative-ai/migrating-the-gi...
- adzm
运行时异步确实是个有趣的发展。非常期待看到它最终会如何演进。
- rsalus
这些博客文章真的把我变成了一个 .NET 布道者。我热爱这个框架和语言。
- majora2007
除了 .NET 做出的卓越优化(以及异步运行时)之外,我真正欣赏的是重写后的入门部分。Stephen 重申了过去所有性能改进文章中的概念,以此充分展示优化技术的层层递进,以及它们如何带来转变。
- 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# 还算熟悉,但有什么实际理由去翻出旧教科书,搞明白上面这些到底在说什么吗?
- Sorrel47
一直都很感激持续的性能提升。我们现有的服务不费吹灰之力就变快了,这真是一个不错的收获。
- pseudosavant
写得非常详尽。显然在他们的整个技术栈上都进行了大量的性能改进。如果内容还不够详细或冗长,我本希望能看到一些应用层面的基准测试,以此让我们对预期的累积性能提升有个概念。