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