导读这篇文章是AQTime系列的最后一篇,主要介绍一些实用的技巧,因为作者也是初学乍练,我已经将我所知道的都写出来跟大家分享了!关于AQTime,没有涉及到的肯定还很多,至少我还没有完整看完那份400多页的使用手册,相信里面还有很多知识点这个系列都没有覆盖到,不过没关系,我也是在“ I try to learn things is by "teaching"”,所以强烈希望熟悉AQTime的朋友如果正巧路过,留下您的宝贵经验跟大家分享,也非常欢迎AQTime的菜鸟没把你的疑问和困惑提出来,大家一起解决。
记得留下宝贵意见哦!!!

Tip1:如何通过[Event View]找到准确的Modules

记得在第二篇文章里我提到了配置分析范围,在上一篇最后我们也提到了如果能在一开始就准确地加载必要的Modules,然后只分析收集Modules列表里的Module的性能数据,会有效提高收集数据的速度和分析数据时的工作量。那么,一般我们分析一个应用程序的时候,很多时候可能这个程序并不是我们自己写的,或者我们只是写了其中一小部分,所以我们并不很清楚到底要加载的那些Modules都部署在什么位置,或者说程序到底加载了那些Modules我们也可能根本不清楚。
那么这个时候我们怎么办?我们怎么才能轻松准确地加载最合适的Modules呢?这个Tip就是为了究竟这个问题的,那就是利用AQTime的[Event View]页签记录的值,找到你需要的Modules,[Event View]里会记录程序整个生命周期加载的所有Modules,包括操作系统、框架和程序自身,而且在[Event View]可以直接查看到这些Modules的本地完整绝对路径。说到这里,想必大家已经基本都清楚了吧,要做的就是再AQTime里空跑(至少要加载一个Module)一次完整的你要收集数据的过程,然后去[Event View]里把你需要的Modules挑出来即可,如果觉得在[Event View]里查看不方便,可以通过右键[Save All...]将[Event View]的结果保存为一个HTML文件后再查看,这样会方便很多。

参考上图,看看我们找到了什么,是的,这些就是我们在第一篇文章里就提到过的由ISAPI动态生成的aspx文件对应的类的DLL,这些真是我们需要的,保证准确无误的Modules了!

Tip2:如何设置[Last Results]里临时保存的个数

OK!这个Tip还要从我的一次糗事说起,前段时间大面积调试性能,我一次要收集大约15个功能点的性能问题,都是订单体要求100行大数据量的,本来我们的订单就很大,运行性能已经不是很理想了,如果还是100行的,再加上同时挂上AQTime,还是用我自己的P4 2.6的破机器做服务器,结果就慢的要急死人了,平均每个功能点收集一次需要25分钟以上。所以那天我一上午只收集了大约5个功能点的性能数据,午饭后没有睡午觉,跟同事PK了一会儿街霸对拳皇,就继续收集其他功能的,下午人都有点犯困,警惕性不高,大约收集到第10个功能点时,突然发现[Last Results]列表里为什么只有五组结果呢?上午做的东西都哪去了?!在晕菜了半天以后,最后找到了原因:AQTime默认只能在[Last Results]里保存最近五次的结果数据,第六次的会自动覆盖第一次的,如此反复,也就是说,我下午晕晕的时候,把上午的辛勤劳动果实就那样覆盖掉了!简直太糗了!最后反复确认,被覆盖掉的东西是找不回来的,那些数据只能重新收集一遍了!

如上图所示,在AQTime里是可以通过Panel Options里的"Number of recent results to keep"来设置这个默认值的,所以请大家记住,安装完AQTime以后,记得先把这个值设置大一些,比如100应该足够了!

如上图所示,另一个防止收集结果数据丢失的方法是每次收集完,确认结果有效且需要保持下来备用的,可立即使用右键菜单里的"Move to Saved Results"将结果保存到[Saved REsults]分组里即可,或者使用"Save to File..."保存成单独的aqr文件,这样最保险!

Tip3:如何通过[Summary]快速定位地雷

AQTime在[Summary]页签自动对性能数据从Worst Performance(body only)、Worst Performance(with children)和Routine with max hitCount三个方面进行了汇总,这上个方面其实就是上一篇文章我们介绍的Grid里的[Time]、[Time with Children]和[HitCount],很多时候,这个汇总还是很有用的,例如上一篇文章里的地雷,在下图第一项汇总结果里就已经表露无遗了,所以推荐大家在分析性能数据的时候,养成总是先从[Summary]页签开始的良好习惯。

Tip4:如何通过[Editor]同步查看源代码

一般情况下,如果是调试阶段的性能测试,且你加载的Module是在你的本地环境上编译的,也就是说通过Module(一般指DLL或exe),AQTime可以根据其元数据信息自动找到本地的源代码并自动显示在[Editor]页签里,并且跟Grid列表焦点行上的方法自动同步对应。这是一个非常重要且实用的功能,因为在我们分析性能数据的时候,当你怀疑某个地方有地雷的时候,只要打开[Editor]页签就可以直接看到源代码了,这简直是太方便了。
不过有时,还是经常会出现无法正常查看源代码的情况,这时主要检查这几个方面:
1、Grid列表焦点行上的方法是底层框架的或其他你无法获得源代码的,那么查看不到就是正常现象了!这时倒是可以通过[Disassembler]页签查看反汇编的结果,不过这个看起来肯定是没那么舒服了。
2、如果你只是在一个空项目里加载一个别人共享的aqr文件,那么这个时候你可以把能加载的Module都加载上,就可以自动定位到大部分源代码了,因为aqr文件里只记录了方法名和其各种性能数据结果,它需要通过已经加载的Module去关联源代码才行。
3、通过设置"Search Directories..."定位到源代码的位置,有时候因为你加载的Module里记录的源代码路径不一定跟你本地环境的完全相同,而你确实还有这个Module的源代码,那么就需要通过设置查找路径的方式来定位到源代码了,具体请参考下图:

Tip5:如何在Visual Studio里使用AQTime PlugIn

AQTime在安装的时候,会提示是否作为PlugIn关联到Visual Studio环境,如果安装了,那么在VS的ToolBar里就会多出一个Profiler菜单,通过这个菜单,可以进入一个完全嵌入在VS IDE环境中的AQTime环境,用法跟单独打开的AQTime没什么区别,暂时我们感觉到的最大的区别就是没有[Editor]页签,在Grid列表上双击某个方法,如果是当前项目的,就会自动定位到对于的文件上,这样查看和修改源代码确实会比较方便,其他就没什么感觉了,具体可参考下面的图示。


Tip6:AQTime学习资源

1、系统学习AQTime的最佳资源:Download AQtime User Manual (PDF format) - 7,404K
2、官方的实例:AQtime Case Studies

-欢迎加入博客园.Debug探索团队 Copyright © Justin

本文转自Justin博客园博客,原文链接:http://www.cnblogs.com/justinw/archive/2008/10/30/1320800.html,如需转载请自行联系原作者

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

  1. 明翰经验系列之人生经验与经典文案篇(持续更新)V1.1

    文章目录 传送门 前言 佳句赏析 人生哲理与经验 某人的生活经验 上进心 `亲情` 爱情 友情 职场 健康 互联网&手机 看人 生活 穿着 购物 买房 综合 买车 综合 二手车 经典台词与文案 ...

  2. (原创)[短小精悍系列]RGB(RGI/RGV)颜色明度(亮度)计算公式 (又称灰度公式,彩色照片转黑白照片时能派上用场)

    作者:❄️固态二氧化碳❄️ (主页) 链接:(原创)[短小精悍系列]RGB(RGI/RGV)颜色明度(亮度)计算公式 (又称灰度公式,彩色照片转黑白照片时能派上用场) - 固态二氧化碳的博客 - CS ...

  3. 二十一世纪“新元宇宙”奇科幻小说原创作品系列连载【第一部】第二回 登峰时刻

    二十一世纪"新元宇宙"奇科幻小说原创作品系列连载[第一部] <地球人奇游"天球"记> 第二回    登峰时刻 1.静沐"新哲学" ...

  4. 交叉编译时undefined reference to `inflate_魅蓝风采现腕间 品鉴格拉苏蒂原创议员系列世界时腕表...

    [腕表之家 腕表品鉴]德国品牌一向以高超的技术作为自己的立身之本,而格拉苏蒂原创作为德国腕表品牌,它具有鲜明的德国特色,秉承锐意创新的价值理念.这款Senator Cosmopolite 议员世界时腕 ...

  5. (原创)[短小精悍系列]为什么生活中黄色物品给人感觉较亮,而蓝色物品给人感觉较深?其实你只看到了表象

    原文地址:https://blog.csdn.net/weixin_44938037/article/details/105901878 转载请注明出处.   这篇文章中,我来谈谈日常生活中的&quo ...

  6. 宏基因组公众号14天受邀原创-诚邀同行共享研究经验

    庆祝"宏基因组"成为原创公众号 "宏基因组"公众号于2017年7月3日发布第一篇技术文章,至17日受腾讯邀请,成为原创公众号. 14天14篇笔记,累积阅读近1. ...

  7. 原创 | k8s系列教程一:开篇

    作者:潘吉祥 欢迎加入k8s学习系列教程,在接下来的系列文章,你将可以在较短的时间内达到入门k8s的效果. k8s是什么 Kubernetes(K8S)作为Google在2014年发布的一个开源项目, ...

  8. 【原创】6年测试经验,总结一下我心中的开发流程

    前言: 本篇文章更适用于敏捷开发的团队,如有不足,欢迎探讨. 测试工作不仅仅要从产品的角度去保证产品质量,还要完善研发流程,就像一条流水线工作,每个环节都不能出错,才能生产出优质的产品. 本文所指开发 ...

  9. 三洋服务器r系列和q系列区别,【经验分析】三菱Q系列和FX PLC系列的区别

    将三菱可编程控制器中使用的内置的输入输出继电器.辅助继电器.状态.计数器.数据寄存器等各种软元件的作用和功能进行了说明.这些内容是使用可编程控制器时的基础知识. Q系列 FX系列 输入继电器 X输入继 ...

最新文章

  1. 微软职位内部推荐-SW Engineer II for Azure Network
  2. 为什么接吻需要闭眼睛?
  3. openjdk8 项目结构_OpenJDK织机和结构化并发
  4. 洛谷 P1063 能量项链 区间dp
  5. 重载(overload)、覆盖(override)、隐藏(hide)的区别
  6. iis如何连接mysql_iis怎么连接数据库
  7. 值得关注的5款低代码平台推荐
  8. 毕业设计 嵌入式太空游戏机设计与实现
  9. IIS本地FTP服务器搭建
  10. php faker,PHP Faker 教程
  11. DataPipeline | 享物说产品负责人夏凯:数据驱动的用户增长实战
  12. Rodrigues’ Rotation Formula罗德里格旋转公式详解(坐标轴旋转)
  13. Python爬取数据存储到本地文本文件
  14. 快速聊天回复神奇工具程序软件下载
  15. mysql数据的备份
  16. 前端学习 之 CSS(三)
  17. matlab耀输,基于 Matlab的BP神经网络在太阳耀斑级别预测中的应用
  18. Google Earth Engine(GEE)——全球洪水数据库 v1 (2000-2018年)
  19. 【SQL开发实战技巧】系列(十四):计算消费后的余额计算银行流水累计和计算各部门工资排名前三位的员工
  20. 微伴企微管家与企鲸客scrm的功能差别

热门文章

  1. 编写简单的UDP应用
  2. django中,kindeditor存到数据库的html,前台html标签被自动转义的解决办法
  3. hdu 2871 Memory Control(线段树)
  4. lamp mysql5.5 LAMP平台全新编译安装
  5. WPF内存泄露:CollectionViewSource.GetDefaultView导致Cache对象
  6. Linux内存管理机制研究
  7. 27/100. Intersection of Two Linked Lists
  8. Linux 免密登录配置
  9. 6D姿态估计从0单排——看论文的小鸡篇——Learning Analysis-by-Synthesis for 6D Pose Estimation in RGB-D Images...
  10. 第七次scrum meeting记录