AQtime实战

最近在博客园看到了JustIn兄弟写的一些列的AQtime文章,非常不错,看完了手痒痒于是自己就写点了。

Justin

[原创]DebugTools系列(1):AQTime初探

[原创]DebugTools系列(2):AQTime配置

[原创]DebugTools系列(3):AQTime实践

[原创]DebugTools系列(4):AQTime经验总结


 

一、    背景介绍

 

AQTime 是一款Code Profile 工具,在2004年即获得了Sys-Con Magzine的最佳调试工具奖,它是由AutomatedQA公司(http://www.automatedqa.com)开发的,支持多种语言的性能测试。结合公司当前情况,将利用 AQTime 测试 .net winApp 性能瓶颈。

二、方法概述

1、    确定测试范围:确定需要分析的业务功能范围;裁剪待分析的类和方法。

2、    确定测试粒度:依据由粗至细的粒度原则进行分析,依次进行类、方法、行级跟踪;

3、    分析结果数据:根据截获的数据,分析数据确定下一步动作。

 

三、操作步骤

1、  File –> New Project(Shift+Ctrl+N) 新建空白测试工程AQtime_Demo_TestPrj.aqt

2、  选择测试类型。AQtime可进行Allocation profilerCoverage profilerPerformance profiler等多种测试数据的采集。由于关心函数的执行时间的性能,此处选择“Performance profile”进行数据收集策略;

3、  添加待测文件或模块(*.dll*.exe) ;在 Setup标签页中添加待测程序AQTimeDemo.exe

4、  确定测试区域范围。

4.1   依据“由粗至细”的原则,第一次采取数据时,可直接勾选“Full Check by Routines”,此时将跟踪捕获过程中所有方法的执行细节。为了更有针对性,也为了减少赛选数据量,可手动添加待测试区域 ProcessMethod

4.2   添加待测方法

Setup标签的Modules中,选择待测方法后,右键,选中“Add Selected to Aera”菜单中的“ProcessMethod”,即可将待测方法添加到测试区域。

5、  设定数据采集动作;

5.1   添加动作:

Triggers and Actions 标签页中右键,选择“Add Action…”,会出现“Add Action”对话框。如图填写基本数据后,确定即可。

4.3   设置获取结果动作函数;

Setup标签的Modules中,选中获取结果前执行的函数“AQtime.BusinessLayer.Process”后,右键,选择“Add Selected to Action”的“GetResult”,即可将指定方法添加到GetResult动作中。目的是在执行这些函数后,获取数据结果。

6、  F5启动应用程序,此时会出现“Run Setting”设置对话框,直接点击“Run”即可。在测试*.dll 等内容时,需要先设定运行参数Run -> Parameters 即可出现设定参数对话框。

7、  按照正常步骤执行程序,当程序执行完成后,AQtime 将自动记录每个函数的执行细节:

8、  分析数据

选择其中的某个方法,可在底部得到与该方法关联的细节。个人最喜欢的是下面的 Call Graph”,此处可以看到各种函数的调用关系,并显示出每个函数的执行时间和内容。


9
、通过分析上面的数据,确定下一步需要跟踪的方法为“BusinessLayer::Process”。按照4.2中的方法,将该方法添加到ProcessMethod 区域中。为了更清楚的分析数据,双击“Areas(Routines,Lines) ”面板中的“ProcessMethod”区域,更改Level为“Lines”,并取消勾选的“Full Check By Routines”。

10、按 F5 重启应用程序,重新按照正常步骤执行程序;

11、重新分析收集到的数据。在分析的数据底部,切换到“Editor”标签,得到每行命令执行的时间:

通过以上的分析,得到性能瓶颈点在于Source Line 46行的代码。当反复调用该方法50000次占64.12%的时间,因此我们优化的方法的重点在于改变Process方法中的瓶颈点。找到瓶颈点后,就是对症下药制定修改策略。

 

四、总结

         以上就是通过介绍使用 AQtime分析winApp的性能瓶颈点和热点,制定相关修改策略。使用AQtime不仅仅可以测试 c/s 的性能瓶颈,也可以找到 b/s 的瓶颈,基本上都是大同小异。


相关资料下载:http://download.csdn.net/source/744776

上一篇:Memcached基础及底层机制剖析(CentOS6.8实战)


下一篇:SaltStack实战之配置管理-YAML编写技巧