1. 程式人生 > >用 dotTrace 進行效能分析時,各種不同效能分析選項的含義和用途

用 dotTrace 進行效能分析時,各種不同效能分析選項的含義和用途

對 .NET 程式進行效能分析,dotTrace 能應對絕大多數的場景。在開啟一個程序進行效能分析之前,我們會看到一些效能分析選項(Profiler Options)。本文將介紹這幾個選項的含義,並用實際的例子來說明其用途。


本文內容

dotTrace 的效能分析選項

你可以前往

Download dotTrace: .NET Performance Profiler by JetBrains 下載 dotTrace。

本文要說的就是下圖右邊的那四個選項,在啟動一個程序進行效能分析之前可以看得見的。

dotTrace 啟動程序進行效能分析的介面
▲ dotTrace 啟動程序進行效能分析的介面

有四個選項:

  • Sampling
  • Tracing
  • Line-by-Line
  • Timeline

Sampling 取樣

介面中的描述為:

Accurate measurement of call time. Optimal for most use cases.

使用此選項進行啟動程序後,會準確測量不同方法的執行時間,但不會統計方法的呼叫次數。

這適用於大多數場景。尤其是如果你還沒有對你的程式進行過任何效能分析的情況下,先使用這個選項進行一個初步分析大致確定性能問題是很方便的。

Tracing 追蹤

介面中的描述為:

Accurate measurement of calls number. Optimal for analyzing algorithm complexity.

會準確地測量呼叫次數。但在此選項下,時間的測量將由於效能分析的開銷過大而可能不準確。

如果你使用 Sampling 分析方式得不到你想要的效能分析資料的時候,你可能用得到此選項。例如,當你分析演算法複雜度,需要明確知道方法的呼叫次數,而不需要知道方法的準確執行時間的時候。

Line-by-line 逐行

介面中只寫了一句根本無法理解的話:

Advanced use cases only.

僅僅說了這是高階使用場景,名沒有說什麼樣的場景。

這個選項下,分析器會測量每行程式碼。由於效能分析的開銷過於巨大,呼叫時間的測量也是不準確的。如果要降低此選項下的開銷,你可以使用過濾器僅分析特定的方法。關於使用過濾器,可以閱讀官方文件 Profiler Options - Help - dotTrace

當你已經通過其他方法得知效能問題出現在哪個具體的方法時你可能需要用到這個選項,這會分析此方法的每一行程式碼。

Timeline 時間線

介面中的描述為:

Measurement of temporal performance data. Optimal for most use cases including analysis of multi-threaded applications.

收集有關執行緒狀態、應用程式事件和其他多執行緒資料的時態資料。此方法基於 Windows 的事件跟蹤器(ETW)。

推薦用於大多數情況,尤其是分析多執行緒應用程式的時候。你可以用這個選項來確定 UI 卡頓或不響應的原因,可以分析過多的 GC(垃圾回收),可以分析不均勻的工作負載分配、IO 不足或者其他各種異常。

由於需要用到 Windows 的事件跟蹤器(ETW),所以你可能遭遇 ETW 相關的問題。具體可以閱讀 用 dotTrace 進行效能分析時,Timeline 打不開?無法啟動程序?也許你需要先開啟系統性能計數器的訪問許可權


參考資料