AQtime实战
內(nèi)部邀請碼:C8E245J?(不寫邀請碼,沒有現(xiàn)金送)
國內(nèi)私募機構(gòu)九鼎控股打造,九鼎投資是在全國股份轉(zhuǎn)讓系統(tǒng)掛牌的公眾公司,股票代碼為430719,為“中國PE第一股”,市值超1000億元。? ------------------------------------------------------------------------------------------------------------------------------------------------------------------
?
 最近在博客園看到了JustIn兄弟寫的一些列的AQtime文章,非常不錯,看完了手癢癢于是自己就寫點了。
Justin
[原創(chuàng)]DebugTools系列(1):AQTime初探
[原創(chuàng)]DebugTools系列(2):AQTime配置
[原創(chuàng)]DebugTools系列(3):AQTime實踐
[原創(chuàng)]DebugTools系列(4):AQTime經(jīng)驗總結(jié)
?
?
一、??? 背景介紹
?
AQTime 是一款Code Profile 工具,在2004年即獲得了Sys-Con Magzine的最佳調(diào)試工具獎,它是由AutomatedQA公司(http://www.automatedqa.com)開發(fā)的,支持多種語言的性能測試。結(jié)合公司當前情況,將利用 AQTime 測試 .net 的 winApp 性能瓶頸。
二、方法概述
1、??? 確定測試范圍:確定需要分析的業(yè)務(wù)功能范圍;裁剪待分析的類和方法。
2、??? 確定測試粒度:依據(jù)由粗至細的粒度原則進行分析,依次進行類、方法、行級跟蹤;
3、??? 分析結(jié)果數(shù)據(jù):根據(jù)截獲的數(shù)據(jù),分析數(shù)據(jù)確定下一步動作。
?
三、操作步驟
1、? File –> New Project(Shift+Ctrl+N) 新建空白測試工程AQtime_Demo_TestPrj.aqt;
2、? 選擇測試類型。AQtime可進行Allocation profiler、Coverage profiler、Performance profiler等多種測試數(shù)據(jù)的采集。由于關(guān)心函數(shù)的執(zhí)行時間的性能,此處選擇“Performance profile”進行數(shù)據(jù)收集策略;
3、? 添加待測文件或模塊(*.dll,*.exe) ;在 Setup標簽頁中添加待測程序AQTimeDemo.exe
4、? 確定測試區(qū)域范圍。
4.1?? 依據(jù)“由粗至細”的原則,第一次采取數(shù)據(jù)時,可直接勾選“Full Check by Routines”,此時將跟蹤捕獲過程中所有方法的執(zhí)行細節(jié)。為了更有針對性,也為了減少賽選數(shù)據(jù)量,可手動添加待測試區(qū)域 ProcessMethod 。
4.2?? 添加待測方法
在Setup標簽的Modules中,選擇待測方法后,右鍵,選中“Add Selected to Aera”菜單中的“ProcessMethod”,即可將待測方法添加到測試區(qū)域。
5、? 設(shè)定數(shù)據(jù)采集動作;
5.1?? 添加動作:
在 “Triggers and Actions” 標簽頁中右鍵,選擇“Add Action…”,會出現(xiàn)“Add Action”對話框。如圖填寫基本數(shù)據(jù)后,確定即可。
4.3?? 設(shè)置獲取結(jié)果動作函數(shù);
在 Setup標簽的Modules中,選中獲取結(jié)果前執(zhí)行的函數(shù)“AQtime.BusinessLayer.Process”后,右鍵,選擇“Add Selected to Action”的“GetResult”,即可將指定方法添加到GetResult動作中。目的是在執(zhí)行這些函數(shù)后,獲取數(shù)據(jù)結(jié)果。
6、? 按F5啟動應(yīng)用程序,此時會出現(xiàn)“Run Setting”設(shè)置對話框,直接點擊“Run”即可。在測試*.dll 等內(nèi)容時,需要先設(shè)定運行參數(shù)Run -> Parameters 即可出現(xiàn)設(shè)定參數(shù)對話框。
7、? 按照正常步驟執(zhí)行程序,當程序執(zhí)行完成后,AQtime 將自動記錄每個函數(shù)的執(zhí)行細節(jié):
8、? 分析數(shù)據(jù)
選擇其中的某個方法,可在底部得到與該方法關(guān)聯(lián)的細節(jié)。個人最喜歡的是下面的 “Call Graph”,此處可以看到各種函數(shù)的調(diào)用關(guān)系,并顯示出每個函數(shù)的執(zhí)行時間和內(nèi)容。
 9、通過分析上面的數(shù)據(jù),確定下一步需要跟蹤的方法為“BusinessLayer::Process”。按照4.2中的方法,將該方法添加到ProcessMethod 區(qū)域中。為了更清楚的分析數(shù)據(jù),雙擊“Areas(Routines,Lines) ”面板中的“ProcessMethod”區(qū)域,更改Level為“Lines”,并取消勾選的“Full Check By Routines”。
10、按 F5 重啟應(yīng)用程序,重新按照正常步驟執(zhí)行程序;
11、重新分析收集到的數(shù)據(jù)。在分析的數(shù)據(jù)底部,切換到“Editor”標簽,得到每行命令執(zhí)行的時間:
通過以上的分析,得到性能瓶頸點在于Source Line 的 46行的代碼。當反復(fù)調(diào)用該方法50000次占64.12%的時間,因此我們優(yōu)化的方法的重點在于改變Process方法中的瓶頸點。找到瓶頸點后,就是對癥下藥制定修改策略。
?
四、總結(jié)
???????? 以上就是通過介紹使用 AQtime分析winApp的性能瓶頸點和熱點,制定相關(guān)修改策略。使用AQtime不僅僅可以測試 c/s 的性能瓶頸,也可以找到 b/s 的瓶頸,基本上都是大同小異。
?
相關(guān)資料下載:http://download.csdn.net/source/744776
轉(zhuǎn)載于:https://www.cnblogs.com/AloneSword/archive/2008/11/03/2237531.html
總結(jié)
 
                            
                        