.NET 6相比.NET 5性能提升高达40% - alexyakunin


下载克隆https://github.com/servicetitan/Stl.Fusion并键入以下内容来运行这个测试:

dotnet build -c Release
Run-PerformanceTest.cmd net6.0
Run-PerformanceTest.cmd net5.0
Run-PerformanceTest.cmd netcoreapp3.1

顶部测试集与底部测试集完全相同,唯一的区别是它依赖于 Fusion 的计算服务而不是常规服务,即它极大地受益于 Fusion 的透明缓存逻辑。
所以就引擎盖下发生的事情而言,

  • 顶级测试主要计算缓存键,散列它们,获取异步锁,并运行ConcurrentDictionary查找
  • 底部测试实际上运行 SQL 命令——主要是SELECT-s 获取单行。

很明显,.NET 6 中的 PGO 在第一种情况下大放异彩,因此进程内缓存肯定会为 .NET 6 带来更多优势。
至于第二类测试,对于速度主要受外部服务(PostgreSQL 或 SQL Server)限制的代码,即使约 5% 的加速也令人印象深刻。InMemory EF Core 提供程序(也是一个 .NET 库)的基准测试通过显示约 14-15% 的加速来证明这一点。
要点是:启用 PGO 的 .NET 6 可能会为您带来:
  • 紧密循环和缓存友好逻辑的速度提高 30–40%
  • +15% 对于不依赖于网络和 IO 的平均代码
  • +5% 对于主要依赖于网络和 IO 的典型 Web 服务。

很明显 .NET 6 确实是迄今为止最快的 .NET,非常感谢所有使这成为可能的人!