日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Dottrace跟踪代码执行时间

發布時間:2024/9/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dottrace跟踪代码执行时间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當自己程序遇到性能問題,比如請求反應緩慢,怎么分析是哪里出了問題呢?dottrace可以幫助.net程序跟蹤出代碼里每個方法的執行時間,這樣讓我們更清晰的看出是哪里執行時間過長,然后再分析應該怎樣解決。

Dottrace是由JetBrainshttp://www.jetbrains.com/?公司開發的一款產品,它分dottrace Performance和dottrace Memory?兩個工具,dottrace Performance用來分析代碼性能,比如函數執行時間,調用次數,消耗時間比率等,dottrace Memory一般用來分析內存占用情況。

本篇文章介紹dottrace跟蹤代碼執行時間來分析性能問題,因此用到的是dottrace Performance工具。它可以跟蹤.net編寫的:應用程序,IIS掛接的程序,windows服務,silverlight,WCF服務程序等。還可以把跟蹤的文件,以快照的方式保存下來,保存為dtp后綴的文件。跟蹤后的結果,如果能找到對應用戶的代碼信息,還可以直接查看對應的源代碼,并選擇在VS里直接編輯該方法對應的文件。

下圖為一個分析性能調優的一個例子:

從結果可以直接看出,整個頁面加載了6.140秒,其中addPNRInfo和retrievePNR兩個方法一共都占用了5.92秒,然后就可以根據這兩個方法進行優化了。

現在講下左側Views目錄下的5個視圖欄:

l?Overview:這個可以看到該性能分析文件的抓取方式,比如上面例子為Line-by-line,Wall Time(CPU instruction)的方式,抓取的URL地址等,還會有該視圖下的系統配置情況以及當前的模塊以及方法個數等信息。

l?Threads Tree:記錄當前每個線程執行的方法,以及方法的性能情況。

l?Call Tree:不管線程,按所有請求的入口為一條數據展現,但里面展現的排序是按照執行時間高低排序的,不是按照代碼順序展現的。

l?Plain List:展現所有非內核代碼的方法列表,并展現每個方法執行時間和被調用次數。

l?Hot Spots:它會把所有代碼包括內核代碼的方法,按照執行時間排序順序展現到列表,并記錄每個方法的執行時間比率和時間等信息。

每次要進行性能分析,除了選擇IIS還是應用程序等方式外,還要選擇抓取的方式,一般的選擇界面如下:

上面是選擇抓取IIS Application程序后的選擇界面,其中重要的是下面的Profiler options選項。

profiling type有下面三個選項:

l?Tracing:它是通過獲取CLR內部一個方法開始執行和結束執行的時間差來計算的分析時間。

l?Line-by-line:它是通過收集代碼執行的每條語句的時間來,它計算出的時間更精確。

l?Sampling:它是抽樣的方式,每隔一段時間(windows下大概是10ms),會暫停所有線程,并抓取堆棧里的信息,然后計算出代碼執行時間差,這個選項可能會導致一些執行很短的方法抓取不到的問題。

Measure有下面三個選項:

l?Wall time(performance counter):?它是通過Performance Counter API來收集的信息,一般操作系統和各個硬件設備都提供性能計數的API供程序調用。

l?Thread time:它只支持Sampling的分析方式,它通過一個固定的線程來抓取堆棧信息計算時間,并且它只計算自己內部程序執行的時間,不管等待其他IO的時間。

l?Wall time(CPU instruction):它是通過讀取TSC processor register里記錄的方法進入和退出時間差的方式來計算的。

根據上面的選項方式,一般我們要想完整分析自己程序的執行時間,建議可以采用Line-byline(或Tracing)和Wall time(CPU instruction)或Wall time(performance counter)的方式,因為如果用抽樣和Thread time的搭配方式,會只計算自己內部時間,不能計算自己程序和外部程序交互的時間,會讓自己分析性能時產生誤導。

在開始分析IIS掛接的網站性能問題時,用工具的File->Profile…會造成IIS應用程序池重啟,可能時間會比較長,因為內部會預編譯和比如操作數據庫,沒有開啟數據庫連接池,會影響分析的結果,誤導自己以為數據庫或內核代碼導致性能問題。一般應該在第一次性能分析后,重新用Start Profiling的方式來重新測試網站數據,如圖:

?????????內部會有很多內核代碼和初始化的操作會影響性能分析,這里從新點擊Start Profiling重新進行性能分析,它不會重啟應用程序池,如圖:

  

這樣就減少了很多初始化的耗時操作,可以更精確的對性能進行分析了。

http://www.cnblogs.com/Lawson/archive/2011/12/18/2292045.html

總結

以上是生活随笔為你收集整理的Dottrace跟踪代码执行时间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。