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 profiler、Coverage profiler、Performance
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

时间: 2025-01-31 03:16:41

AQtime实战的相关文章

300+篇运维、数据库等实战资料免费下载(文章+PDF+视频,持续更新)

2017年已过去一半,在此小编为大家精心整理了2017上半年热点事件解析.实战技术资料以及特别策划短视频系列,希望可以帮助大家更深入地回顾上半年的技术热点,并储备更充足的技术干粮继续2017的下一半. PART 1 峰会回顾资料 云栖大会 [上海云栖大会]2017云栖大会上海峰会资料合计(现场视频+PDF下载) [成都云栖大会]2017云栖大会成都峰会资料合计(现场视频+PDF下载) [南京云栖大会]2017云栖大会南京峰会资料合计(现场视频+PDF下载) 技术峰会 [运维/DevOps峰会]

UI实战指南之留在电脑里的字体(一)

  进阶学习最实用教材!这一由@牛MO王涵 (BigDesign创始人/设计总监)编写的系列文章,从字体选择到提升设计感的技巧等都有涉猎,话题虽广,但全是实战过程中最关键的要素,而且是新手最关心的操作部分,学完直接上手工作 >>> 前言:我来了,这是U1系列新开篇章实战篇,不仅仅是适用于UI设计,甚至包含网页设计.平面设计.在文章中会更多的介绍一些操作上的教学,希望对新人们有帮助. 推荐字体 很多小伙伴在做设计的时候,无论是排版还是展示,都不太注重字体,或者有些太过于注重以至于用了很多种

品牌H5营销完全实战指南

那些百万PV的H5都是怎么做的?精心打造的H5要如何推广?H5技术将如何发展?本文一一为你解答 >>> 作者微信号,欢迎关注:Social Talent 对于H5这个名词想必大家已经很熟悉了,就在2014年,一项本来还不太成熟的技术在微信的社交舞台下大放异彩,让我们见识了"移动+社交"爆发的巨大能量. 然而这不是偶然,而是趋势.在具体介绍H5营销之前,我想和大家分享一份eMarketer的数据,其中显示了2012年-2018年品牌在不同媒体渠道的预算比重: 相比电视.

视频出炉:4月15日《阿里云RDS MySQL分支深度定制实战分享》

活动视频 <阿里云RDS MySQL分支深度定制实战分享> PDF地址:https://oss.aliyuncs.com/yqfiles/a5344b5961b367786a95620c636c4640.pdf 分享简介:阿里云RDS MySQL经过多年的积累,不断的进行性能优化,并定制了适合不同行业需求的功能,同时也向官方和社区贡献力量.本次主题主要介绍RDS MySQL分支的深度定制,包括功能扩展.资源管控.性能优化.数据安全.行业解决方案等. 分享者:赵建伟,现任阿里云数据库内核资深研发

113期:电子书《阿里巴巴技术实战2016年刊》重磅发布,免费下载!

本期头条   • [资料合集]首届阿里开源峰会回顾:讲义PDF+活动视频! • [在线峰会]即将直播:大数据技术峰会 • 微博红包技术最佳实践:架构及运维 • 阿里开源数据库AliSQL最佳实践   技术干货   如何使用好阿里云的网络安全隔离?深入分享阿里云ECS安全组实践经验 阿里云的ECS有经典网络和专有网络(VPC)两种网络类型.新业务建议优先考虑VPC网络,阿里云也将于年中开放经典网络的存量服务器向VPC网络迁移的功能.对于大家关注的云服务器的网络安全实践内容,我们特别邀请专家进行了深

阿里云Tech Insight 企业迁云实战专场强势来袭!

随着云计算的飞速发展,越来越多的企业用户选择以云平台为基础,来构建IT架构,聚焦企业的核心战略,以全面提升企业效率.那么,如何将IT架构高效平滑的迁移到云上,如何搭建高可靠高性能的业务系统,我们在Tech Insight的<企业迁云实战>专场将进行一一分享. <冰与火之歌 - Oracle上云研究> 数据库作为企业级应用的核心,也是迁云工作的最大挑战.该部分沉淀了阿里云在面向传统客户迁云技术服务过程中的各类问题和实践经验,从架构设计.实施部署.容灾方案,到产品选型.性能和可靠性测试

WKWebView与Js实战(OC版)

前言 上一篇专门讲解了WKWebView相关的所有类.代理的所有API.那么本篇讲些什么呢?当然是实战了! 本篇文章教大家如何使用WKWebView去实现常用的一些API操作.当然,也会有如何与JS交互的实战. 如果还没有阅读过WKWebView精讲(OC版),请先阅读,不然有可能看不懂下面所讲的内容. 效果图 通过本篇文章,至少可以学习到: OC如何给JS注入对象及JS如何给IOS发送数据 JS调用alert.confirm.prompt时,不采用JS原生提示,而是使用iOS原生来实现 如何监

探秘视频编码黑科技,窄带高清2.0视觉模型及场景实战

"黑科技"这个词已经成为了今年云栖大会的关键词.那么,在我们熟知的视频领域,什么才算是黑科技呢? 我们知道,在通常情况下,视频画质越好带宽费用肯定越高,带宽又是视频服务中占比很高的一项成本,很多开发者都在寻求效果与成本的平衡点.那么,有没有一种技术,能够在保证甚至提高视频画质的同时,降低带宽呢?如果有的话,小编觉得这一点可以算是黑科技了吧. 今天,小编就带大家来了解下刚刚在云栖大会上重磅发布的阿里云窄带高清2.0,看看它是如何超越压缩极限,在视觉效果和带宽成本中找到平衡的. 首先,我们

实战给AW_Blog插件添加缓存(续)

两年前的文章(实战给AW_Blog插件添加缓存)描述了一个Block Cache的实例,最近发现代码其实写的有点累赘,后台保存时自动触发刷新缓存并不需要自己去写刷新的动作,系统原生的Model继承类Mage_Core_Model_Abstract里已经有实现这个动作的代码,只需要简单的配置下变量就能实现.修改后的方案如下(Block类的所需修改代码不变) 打开AW_Blog_Model_Post这个文件,在头部定义一个常量,再定义一个变量 const CACHE_TAG = 'aw_blog';