2018年10月19日 星期五

dotTrace 說明文件心得 (一)

markdown 本篇記錄我閱讀網頁;https://www.jetbrains.com/help/profiler/ 後的心得 ### Profiling的步驟 1. 建構一個Profiling設定並執行它 2. 使用SnapShot來Dump特定時間點的狀態 3. 分析Dump下來的結果,找出使程式的瓶頸 4. 修改應用程式 5. 再度執行步驟2並與上次的結果比較 ### Profiling的方法 ### Performance Profiling使用時機 1. 分析整個應用程式的效能 2. 找出程式中最慢的部分 3. 在特定方法中尋找瓶頸 ### Timeline Profiling使用時機 1. 找出應用程式的瓶頸 2. 找出造成UI無回應的原因 3. 找出過度IO或是GC的呼叫 4. 分析多執從緒所引入的鎖定、工作分配等。 ### Performance vs Timeline Profiling Performance 可以用來觀察方法被呼叫的頻率、所用的時間,找出應用程式中秏費最多的方法。 但無法明確告知在特定時間下的資源使用狀況。 Timeline 可以用來觀察每一個時間點下的資源使用狀況,該時間點下正在執行的方法。 但不易統計一段時間的方法呼叫頻率、所用時間。 ### Performance Profiling 取資料的方式 1. Sampling 間隔的取,對系統的影響小,取一次資料最少要 5~11 ms 2. Tracing 從CLR中接收方法開始及結束的事件來做取資料 3. Line-by-Line 記錄每個狀態,不過要有.pdb才有辦法。不然就跟Tracking一樣 第一次時建議使用Sampling ### Performance Profiling 統計時間的方式 1. RealTime (performance counter) 方法執行的完整時間,但與方法2相比較不準 2. RealTime (CPU instruction) 同1,但是透過特定API取得,所以較準 3. Thread Time 只記錄Thread有在工作的時間,若是進入Sleep等就不會記錄 4. Thread Cycle Time 用2相同的API去取得Thread有在工作的時間,較方法3來得準。 由於方法3,4會比方法1,2慢很多,所以建議使用方法1,2。 由於方法2較準,所以可以用方法2就用方法2。

沒有留言:

張貼留言