.NET6发布了Preview2,这点超越过去10年!
從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做的性能基準測試結果。
2 ?JMeter壓力測試
壓力測試是一個項目質量的基礎保障行為,沒有經過壓測的項目怎敢上線?說到壓力測試,重量級的Loadrunner這些年用的要少一些了,很多專業測試,也是使用JMeter來做壓測了。JMeter是Apache公司基于Java開發的一款開源壓力測試工具,體積小,功能全,是一個輕量級的測試工具,使用起來非常簡單。其原理是通過中間代理,監控與收集并發客戶端發現的指令,將其生成腳本,并發送到應用服務器,再監控服務器反饋結果的一個過程。有著詳盡的可視化界面,讓開發者可以針對性去優化,有的放矢!
3 JetBrains DotTrace內存優化
.NET開發者一般不怎么關心GC和內存泄漏問題,然而一旦發生了,往往就束手無策了。這里給大家推薦下JetBrains DotTrace Memory,親測最好用的性能調試,內存優化工具!DotTrace Memory支持兩種模式,識別即時內存狀態,或者動態監控內存分配,擁有豐富的快照視圖,還能快速查找關注的對象數據,甚至可以追蹤到對應的源代碼文件,應用起來效率非常高!
落地實踐
性能調優從來都不簡單,類似的工具還有很多,然而百聞不如一見,工具還是操作起得來最直觀,優化還是數據最好看!今晚八點,我會在線直播演練BenchmarkDotNet多場景代碼基準性能測試,JMeter壓測Docker里面的Core WebAPI實例,DotTrace監控內存分配和碎片管理,分享多年積累的性能優化經驗,歡迎掃碼進群關注。
寫在最后
從事多年IT,也見識無數碼農,深知IT不易,也不是每一份兒努力都能換來對應的回報。當下正值金三銀四跳槽季,我們更應該在CRUD之余,去關注下框架,關注下底層,關注下架構,關注下調優,爭取讓自己的付出拿到更好的回報。新年跳槽季,這里準備了一系列.NET5實戰教程、微服務架構教程、多套高頻筆面試題等,能助你跳槽加薪一臂之力,請掃碼領取!
掃碼添加好友即可免費領取
添加微信:zhaoxi066也可獲取
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的.NET6发布了Preview2,这点超越过去10年!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 合并BitMap图像,生成超大bi
- 下一篇: .NET团队送给.NET开发人员的云原生