天天看點

.NET開源5年了,這些寶藏你還沒get?1 BenchmarkDotNet性能基準測試2 JMeter壓力測試3 JetBrains DotTrace記憶體優化

從ASP.NET的性能诟病,到.NET Core的性能持續改進,在每一個.NET Core版本都能看到性能優化提升的介紹。.NET Core3.1在各種性能排行中霸榜,.NET5再度提升了性能,前些天釋出的.NET Preview2,通過PGO (Profile-Guided Optimization)來優化二進制内的原生代碼,預期全平台能得到 10% 的啟動速度提升和吞吐量性能提升!為啥微軟花這麼大力氣做性能提升?因為當下的微服務和雲原生時代,服務已經碎片化了,業務會經曆更長的調用路徑,單一節點性能提升直接影響全局!作為.NET開發者,必須有性能優化意識和方法,才能走在高薪前沿!

優化5大手段

網際網路發展至今,各種架構設計優化的思路已經很成熟了,優化的目标就是用更少的資源提供更好的服務,成本利益最大化,正常手段如下:

時間換空間,大檔案處理時,切分資料分批次處理,花更多的時間,用更少的空間完成處理。

異步化:各種消息隊列就是典型案例,将業務分拆,避免阻塞,提升吞吐量。

分治:典型的歸并排序、快排,都是将資料分成小塊兒排序最終再合并,分而治之。

并行:包括多線程和單線程多程序兩種模式,就是将任務分開,同時執行以加快速度。

叢集化:提供良好的擴充能力,更多的資源換取更好的性能。

優化3大工具

性能調優的方式很多,然而最直接有效的辦法就是使用優秀的工具,工欲善其事必先利其器,優秀的工具能讓性能調優事半功倍!下面給大家推薦幾款常用工具,親測非常靠譜!

1 BenchmarkDotNet性能基準測試

性能測試是開發人最關心的,然而一個算法的性能在不同的裝置、不同的CLR、不同的測試方式、不同的資料量,表現出來的結果也是不一樣,是以要測試一個算法的性能,需要在充分的背景下才有意義,這就是性能基準測試,C#首選的就是大名鼎鼎的BenchmarkDotNet。這是一個用MIT協定開源的C#程式性能測試庫,非常簡單易用,開源位址為

https://github.com/dotnet/BenchmarkDotNet

。現在向Github送出代碼前,都會來一波性能測試,用法也非常簡單,直接用BenchmarkDotNet即可。在Github上經常能看到下圖内容,就是基于Benchmark做的性能基準測試結果。

.NET開源5年了,這些寶藏你還沒get?1 BenchmarkDotNet性能基準測試2 JMeter壓力測試3 JetBrains DotTrace記憶體優化

2 JMeter壓力測試

壓力測試是一個項目品質的基礎保障行為,沒有經過壓測的項目怎敢上線?說到壓力測試,重量級的Loadrunner這些年用的要少一些了,很多專業測試,也是使用JMeter來做壓測了。JMeter是Apache公司基于Java開發的一款開源壓力測試工具,體積小,功能全,是一個輕量級的測試工具,使用起來非常簡單。其原理是通過中間代理,監控與收集并發用戶端發現的指令,将其生成腳本,并發送到應用伺服器,再監控伺服器回報結果的一個過程。有着詳盡的可視化界面,讓開發者可以針對性去優化,有的放矢!

.NET開源5年了,這些寶藏你還沒get?1 BenchmarkDotNet性能基準測試2 JMeter壓力測試3 JetBrains DotTrace記憶體優化

3 JetBrains DotTrace記憶體優化

.NET開發者一般不怎麼關心GC和記憶體洩漏問題,然而一旦發生了,往往就束手無策了。這裡給大家推薦下JetBrains DotTrace Memory,親測最好用的性能調試,記憶體優化工具!DotTrace Memory支援兩種模式,識别即時記憶體狀态,或者動态監控記憶體配置設定,擁有豐富的快照視圖,還能快速查找關注的對象資料,甚至可以追蹤到對應的源代碼檔案,應用起來效率非常高!

.NET開源5年了,這些寶藏你還沒get?1 BenchmarkDotNet性能基準測試2 JMeter壓力測試3 JetBrains DotTrace記憶體優化

落地實踐