ANTS Performance Profiler(.NET效能調優教程)

來源:互聯網
上載者:User


.NET效能調優系列文章

系列文章索引

  • .NET效能調優之一:ANTS Performance Profiler的使用

  • .NET效能調優之二:使用Visual Studio進行程式碼度量

  • .NET效能調優之三:YSlow相關規則的調優工具和方法

在使用.NET進行快速地上手與開發出應用程式後,接下來面臨的問題可能就是程式效能調優方面的問題,而效能調優有時候會涉及方方面面的問題,如程式宿主系統、資料庫、網路環境等等,而當程式異常龐大複雜的時候,效能調優將變得更加無從下手。

本系列文章主要會介紹一些.NET效能調優的工具、Web效能最佳化的規則(如YSlow)及方法等等內容。成文前最不希望看到的就是園子裡不間斷的“哪個語言好,哪個語言效能高”的爭論,不多說,真正的明白人都應該知道這樣的爭論有沒有意義,希望我們能從實際效能最佳化的角度去討論問題。

ANTS Performance Profiler的基本使用

ANTS Performance Profiler是RedGate旗下強大的效能調優產品,官方產品頁面在這裡。

先來看一下軟體的基本使用。

使用下面這段代碼進行簡單的測試。

這是一個控制台應用程式,程式很簡單,先進行10000次迴圈,輸出和,再使用LINQ在list裡找出1000的值輸出。

1 static void Main() 2 { 3     var list = new List<int>(); 4  5     var sum = 0; 6     for (var i = 0; i < 10000; i++) 7     { 8         sum += i; 9         list.Add(i);10     }11     Console.WriteLine(sum);12 13     //find the value use linq: 100014     var result = list.Where(p => p.Equals(1000));15     foreach (var i in result)16     {17         Console.WriteLine(i);18     }19     Console.ReadKey();20 }

編譯器後,啟動ANTS Performance Profiler,會自動彈出嚮導頁面,在此頁面中,可以看到軟體支援多種.NET程式的效能監控,如EXE、web、Windows Service等等。

而在Performace Counters中可以根據需要選擇多種計數器,IO、記憶體配置、處理器等等。

針對測試DEMO,選擇編譯後的exe檔案路徑,因為剛才是debug編譯,所以選擇程式檔案夾下\bin\Debug\裡面的exe即可。

在Profiling Mode裡可以選擇監控的層級,基本就是監控資訊的多少與速度的權衡,預設選擇“最詳細”即可。其他的詳細設定可以參考說明文檔。

點擊“Start Profiling”,啟動程式。

分析結果的查看與分析

軟體的基本工作原理是在.NET編譯出的IL代碼裡放入鉤子用來記錄時間,然後通過直觀的介面顯示出哪部分代碼耗能最大。所以這是效能調優最直接的方法,針對最耗時的程式碼片段進行最佳化即可。

點擊“Start Profiling”後啟動之前編譯的程式,軟體開始執行,如果是其他互動程式如winform、web等,操作完需要進行效能調優的功能後,在頂部的已耗用時間軸裡用滑鼠選定需要查看的時間段即可,一般有效能問題的時間段會出現一個波峰,選定那個時間段即可。

選定後可以立即在下面的結果視窗中看到最耗時的方法,比如上面的DEMO,當然效能都消耗在了Main函數上。

軟體提供了多種度量值查看效能損耗,有百分比和多種時間格式,這裡選定“秒”作為度量單位。

再選擇要查看的函數,軟體強大之處就顯現出來了。

  • 右側的紅色標線,點擊可以快速定位到最耗能的代碼,顏色越深表示那段代碼越耗能。

  • 左側可以看到行號,此段代碼執行的次數(Hit Count),平均執行時間,總的執行時間,當然還可以同時看到代碼供分析使用。

至於DEMO裡這段代碼為什麼第一次執行Console.WriteLine如此耗能,我想如果你認真看了《CLR via C#》的第一章就應該能知道答案了。

當然你還可以點擊階層表徵圖,查看更加直觀的效能損耗,就像下面這樣。

這樣的階層圖還有一個好處就是可以看到.NET Framework的內部實現。

當進行一些決策,比如是用原生的功能還是第三方組件時,這個功能會變得非常好用,因為通過它能比較直觀的地看到內部實現的效能瓶頸在哪裡。

結語

ANTS Performance Profiler是我效能調優時最先使用也是最喜歡使用的工具,所以放在了第一篇文章裡來分享給大家,希望能給各位帶來點協助。

它非常的直觀、強大,因為手頭複雜的項目不適合用來做DEMO,所以只是寫了段簡單的代碼作示範,它的強大之處還待你真正遇到效能問題使用它時去好好體會。

文章有所疏漏和要補充的,請留言一起討論,也請關注後續的相關文章。

如果文章對你有點協助,推薦一下吧,謝謝 :)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.