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。
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言