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

简介:
导读这篇文章是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 探索团队

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


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

相关文章
|
算法
2022年终总结 | 我与CSDN的那些事,如何两个月成为一名万粉博主
Hello大家好,这里是每天都在努力学习后端的小王同学,遇见即是缘分,欢迎光临我的世界~
136 0
2022年终总结 | 我与CSDN的那些事,如何两个月成为一名万粉博主
|
JavaScript
原创 今日webjs学习
原创 今日webjs学习
70 0
原创 今日webjs学习
|
网络协议 Shell PHP
原创 今日学习
原创 今日学习
92 0
原创 今日学习
|
SQL 关系型数据库 数据库
原创 数据库原理
原创 数据库原理
71 0
原创 数据库原理
|
算法 SEO 搜索推荐
如何写好高质量的原创文章?
随着百度算法的不断升级,百度越来越重视原创文章了,但是原创文章可不单单是用工具查询的相似度为0的文章,更多的应当是可以解决用户需求,能够引发用户阅读兴趣的文章,即看了这篇文章还想下次再来你的网站进行学习。
1220 0
设计模式概念与简介(原创)
设计模式 什么是设计模式? 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。
1047 0
|
搜索推荐 SEO
如何写出高质量的原创文章
一个网站的好坏,能否有好的排名,跟网站的内容的好坏是有直接的关系的,正所谓“内容为王,外链为皇”,SEO的排名是以页面为单位的,需要足够的内容来支撑,有高质量的内容的页面才会被百度收录,能被百度收录对应的页面关键词才会有排名,关键词有排名网站才会产生流量。
644 0
|
Web App开发 JavaScript 前端开发