AQtime实战

简介: 最近在博客园看到了JustIn兄弟写的一些列的AQtime文章,非常不错,看完了手痒痒于是自己就写点了。Justin [原创]DebugTools系列(1):AQTime初探 [原创]DebugTools系列(2):AQT...
最近在博客园看到了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

目录
相关文章
|
6月前
|
存储 网络协议 Linux
C++项目实战-实际应用(一)
C++项目实战-实际应用(一)
58 0
|
10天前
|
存储 传感器 数据处理
单片机编程入门与实践
单片机编程入门与实践
21 2
|
6月前
|
存储 搜索推荐 Linux
5个值得学习的C++完整项目实战
5个值得学习的C++完整项目实战
|
6月前
|
缓存 算法 Java
C++项目实战-实际应用(二)
C++项目实战-实际应用(二)
46 0
|
10月前
|
测试技术 Android开发 Kotlin
QMUI实战(一)—为何我们要使用 LauncherActivity?
QMUI 2 发布了,但是里面换肤等相关的很多东西,如果不讲,那么很多人估计就只能复制粘贴下 QMUIDemo 的代码,而并不能用好 QMUI, 或者是通过 QMUI 来提升自己的 UI 开发能力,毕竟现在很多 Android 开发都是轻 UI 而重数据流,遇到需要复杂 UI 的地方,在 Github 上随便找个组件套上去就行了,如果找得到刚好符合需求的还好,如果找到的不是那么切合需求,那一天的状态很可能就是“一壶茶、一包烟、几个间距颜色调一天”了。
164 0
|
Kubernetes 安全 应用服务中间件
案例实战| 学习笔记
快速学习案例实战。
107 0
案例实战| 学习笔记
|
机器学习/深度学习 Kubernetes 安全
案例实战二| 学习笔记
快速学习案例实战二。
89 0
案例实战二| 学习笔记
|
监控 JavaScript 机器人
Hubot 实战 | 学习笔记
快速学习 Hubot 实战
558 0
|
SQL 存储 分布式计算
HBSAE实战总结
HBSAE实践:(先启动zookeeper)
165 0
HBSAE实战总结