.NET 6相比.NET 5效能提升高達40% - alexyakunin

banq發表於2021-11-30

下載克隆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,非常感謝所有使這成為可能的人!

 

相關文章