[原创]DebugTools系列(4):AQTime经验总结
生活随笔
收集整理的這篇文章主要介紹了
[原创]DebugTools系列(4):AQTime经验总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
導讀這篇文章是AQTime系列的最后一篇,主要介紹一些實用的技巧,因為作者也是初學乍練,我已經將我所知道的都寫出來跟大家分享了!關于AQTime,沒有涉及到的肯定還很多,至少我還沒有完整看完那份400多頁的使用手冊,相信里面還有很多知識點這個系列都沒有覆蓋到,不過沒關系,我也是在“?I try to learn things is by "teaching"”,所以強烈希望熟悉AQTime的朋友如果正巧路過,留下您的寶貴經驗跟大家分享,也非常歡迎AQTime的菜鳥沒把你的疑問和困惑提出來,大家一起解決。
記得留下寶貴意見哦!!!
那么這個時候我們怎么辦?我們怎么才能輕松準確地加載最合適的Modules呢?這個Tip就是為了究竟這個問題的,那就是利用AQTime的[Event View]頁簽記錄的值,找到你需要的Modules,[Event View]里會記錄程序整個生命周期加載的所有Modules,包括操作系統、框架和程序自身,而且在[Event View]可以直接查看到這些Modules的本地完整絕對路徑。說到這里,想必大家已經基本都清楚了吧,要做的就是再AQTime里空跑(至少要加載一個Module)一次完整的你要收集數據的過程,然后去[Event View]里把你需要的Modules挑出來即可,如果覺得在[Event View]里查看不方便,可以通過右鍵[Save All...]將[Event View]的結果保存為一個HTML文件后再查看,這樣會方便很多。
參考上圖,看看我們找到了什么,是的,這些就是我們在第一篇文章里就提到過的由ISAPI動態生成的aspx文件對應的類的DLL,這些真是我們需要的,保證準確無誤的Modules了!
如上圖所示,在AQTime里是可以通過Panel Options里的"Number of recent results to keep"來設置這個默認值的,所以請大家記住,安裝完AQTime以后,記得先把這個值設置大一些,比如100應該足夠了!
如上圖所示,另一個防止收集結果數據丟失的方法是每次收集完,確認結果有效且需要保持下來備用的,可立即使用右鍵菜單里的"Move to Saved Results"將結果保存到[Saved REsults]分組里即可,或者使用"Save to File..."保存成單獨的aqr文件,這樣最保險!
不過有時,還是經常會出現無法正常查看源代碼的情況,這時主要檢查這幾個方面:
1、Grid列表焦點行上的方法是底層框架的或其他你無法獲得源代碼的,那么查看不到就是正常現象了!這時倒是可以通過[Disassembler]頁簽查看反匯編的結果,不過這個看起來肯定是沒那么舒服了。
2、如果你只是在一個空項目里加載一個別人共享的aqr文件,那么這個時候你可以把能加載的Module都加載上,就可以自動定位到大部分源代碼了,因為aqr文件里只記錄了方法名和其各種性能數據結果,它需要通過已經加載的Module去關聯源代碼才行。
3、通過設置"Search Directories..."定位到源代碼的位置,有時候因為你加載的Module里記錄的源代碼路徑不一定跟你本地環境的完全相同,而你確實還有這個Module的源代碼,那么就需要通過設置查找路徑的方式來定位到源代碼了,具體請參考下圖:
2、官方的實例:AQtime Case Studies
記得留下寶貴意見哦!!!
Tip1:如何通過[Event View]找到準確的Modules
記得在第二篇文章里我提到了配置分析范圍,在上一篇最后我們也提到了如果能在一開始就準確地加載必要的Modules,然后只分析收集Modules列表里的Module的性能數據,會有效提高收集數據的速度和分析數據時的工作量。那么,一般我們分析一個應用程序的時候,很多時候可能這個程序并不是我們自己寫的,或者我們只是寫了其中一小部分,所以我們并不很清楚到底要加載的那些Modules都部署在什么位置,或者說程序到底加載了那些Modules我們也可能根本不清楚。那么這個時候我們怎么辦?我們怎么才能輕松準確地加載最合適的Modules呢?這個Tip就是為了究竟這個問題的,那就是利用AQTime的[Event View]頁簽記錄的值,找到你需要的Modules,[Event View]里會記錄程序整個生命周期加載的所有Modules,包括操作系統、框架和程序自身,而且在[Event View]可以直接查看到這些Modules的本地完整絕對路徑。說到這里,想必大家已經基本都清楚了吧,要做的就是再AQTime里空跑(至少要加載一個Module)一次完整的你要收集數據的過程,然后去[Event View]里把你需要的Modules挑出來即可,如果覺得在[Event View]里查看不方便,可以通過右鍵[Save All...]將[Event View]的結果保存為一個HTML文件后再查看,這樣會方便很多。
參考上圖,看看我們找到了什么,是的,這些就是我們在第一篇文章里就提到過的由ISAPI動態生成的aspx文件對應的類的DLL,這些真是我們需要的,保證準確無誤的Modules了!
Tip2:如何設置[Last Results]里臨時保存的個數
OK!這個Tip還要從我的一次糗事說起,前段時間大面積調試性能,我一次要收集大約15個功能點的性能問題,都是訂單體要求100行大數據量的,本來我們的訂單就很大,運行性能已經不是很理想了,如果還是100行的,再加上同時掛上AQTime,還是用我自己的P4 2.6的破機器做服務器,結果就慢的要急死人了,平均每個功能點收集一次需要25分鐘以上。所以那天我一上午只收集了大約5個功能點的性能數據,午飯后沒有睡午覺,跟同事PK了一會兒街霸對拳皇,就繼續收集其他功能的,下午人都有點犯困,警惕性不高,大約收集到第10個功能點時,突然發現[Last Results]列表里為什么只有五組結果呢?上午做的東西都哪去了?!在暈菜了半天以后,最后找到了原因:AQTime默認只能在[Last Results]里保存最近五次的結果數據,第六次的會自動覆蓋第一次的,如此反復,也就是說,我下午暈暈的時候,把上午的辛勤勞動果實就那樣覆蓋掉了!簡直太糗了!最后反復確認,被覆蓋掉的東西是找不回來的,那些數據只能重新收集一遍了!如上圖所示,在AQTime里是可以通過Panel Options里的"Number of recent results to keep"來設置這個默認值的,所以請大家記住,安裝完AQTime以后,記得先把這個值設置大一些,比如100應該足夠了!
如上圖所示,另一個防止收集結果數據丟失的方法是每次收集完,確認結果有效且需要保持下來備用的,可立即使用右鍵菜單里的"Move to Saved Results"將結果保存到[Saved REsults]分組里即可,或者使用"Save to File..."保存成單獨的aqr文件,這樣最保險!
Tip3:如何通過[Summary]快速定位地雷
AQTime在[Summary]頁簽自動對性能數據從Worst Performance(body only)、Worst Performance(with children)和Routine with max hitCount三個方面進行了匯總,這上個方面其實就是上一篇文章我們介紹的Grid里的[Time]、[Time with Children]和[HitCount],很多時候,這個匯總還是很有用的,例如上一篇文章里的地雷,在下圖第一項匯總結果里就已經表露無遺了,所以推薦大家在分析性能數據的時候,養成總是先從[Summary]頁簽開始的良好習慣。Tip4:如何通過[Editor]同步查看源代碼
一般情況下,如果是調試階段的性能測試,且你加載的Module是在你的本地環境上編譯的,也就是說通過Module(一般指DLL或exe),AQTime可以根據其元數據信息自動找到本地的源代碼并自動顯示在[Editor]頁簽里,并且跟Grid列表焦點行上的方法自動同步對應。這是一個非常重要且實用的功能,因為在我們分析性能數據的時候,當你懷疑某個地方有地雷的時候,只要打開[Editor]頁簽就可以直接看到源代碼了,這簡直是太方便了。不過有時,還是經常會出現無法正常查看源代碼的情況,這時主要檢查這幾個方面:
1、Grid列表焦點行上的方法是底層框架的或其他你無法獲得源代碼的,那么查看不到就是正常現象了!這時倒是可以通過[Disassembler]頁簽查看反匯編的結果,不過這個看起來肯定是沒那么舒服了。
2、如果你只是在一個空項目里加載一個別人共享的aqr文件,那么這個時候你可以把能加載的Module都加載上,就可以自動定位到大部分源代碼了,因為aqr文件里只記錄了方法名和其各種性能數據結果,它需要通過已經加載的Module去關聯源代碼才行。
3、通過設置"Search Directories..."定位到源代碼的位置,有時候因為你加載的Module里記錄的源代碼路徑不一定跟你本地環境的完全相同,而你確實還有這個Module的源代碼,那么就需要通過設置查找路徑的方式來定位到源代碼了,具體請參考下圖:
Tip5:如何在Visual Studio里使用AQTime PlugIn
AQTime在安裝的時候,會提示是否作為PlugIn關聯到Visual Studio環境,如果安裝了,那么在VS的ToolBar里就會多出一個Profiler菜單,通過這個菜單,可以進入一個完全嵌入在VS IDE環境中的AQTime環境,用法跟單獨打開的AQTime沒什么區別,暫時我們感覺到的最大的區別就是沒有[Editor]頁簽,在Grid列表上雙擊某個方法,如果是當前項目的,就會自動定位到對于的文件上,這樣查看和修改源代碼確實會比較方便,其他就沒什么感覺了,具體可參考下面的圖示。Tip6:AQTime學習資源
1、系統學習AQTime的最佳資源:Download AQtime User Manual?(PDF format) - 7,404K2、官方的實例:AQtime Case Studies
-歡迎加入博客園.Debug探索團隊 Copyright ? Justin
本文轉自Justin博客園博客,原文鏈接:http://www.cnblogs.com/justinw/archive/2008/10/30/1320800.html,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的[原创]DebugTools系列(4):AQTime经验总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DDR5内存优化哪家主板更强? 多款主板
- 下一篇: iPhone 15系列爆料简单汇总!发布