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