您的位置: 首页 > 技术文档 > 网络编程 >Visual Studio Profiler--应用程序分析器
用智能跟踪(IntelliTrace)窥入云端 回到列表 20年来我得到的20条编程经验
 Visual Studio Profiler--应用程序分析器

作者:bluehearts 时间: 2010-07-26 文档类型:原创 来自:蓝色理想

所有人都希望自己的程序能够飞速运行,但是性能的提升又是何等艰辛,就连起步都那么困难。浩如烟海的代码,哪一段才是性能提升的关键?哪一段才是程序运 行的瓶颈?难道你只能通过在每个函数前后都添加一段时间输出来寻找耗时最长的函数吗?你应当相信,在这个信息化的时代,在这个效率为先的时代,也许每一个需要重复的工 作,都会有一种自动的方式来替代。下面,我将为你介绍一个寻找应用程序瓶颈的分析利器—— Visual Studio Profiler。

既然它的名字以VisualStudio开头,那么它一定与VS有着什么联系了。没错,Profiler是Visual Studio中提供的一个分析工具,在主菜单中的Analyze选项中。如果你发现没 有这个选项,那么,你需要安装一个更为强大的VisualStudio版本。Team系列的VS才会有这个工具的安装。在VS8.0(2005)版本中,Visual Studio Team Edition 配有这个工 具;VS9.0(2008)中,Visual Studio Team System DevelopmentEdition 和 VisualStudio Team Suite 配有这个工具,而在VS2010中,当 然是Ultimate配有此工具了。

Profiler很强大,你可以用他分析一个二进制文件,可以用他分析一个工程,也可以用他分析一个网站。无论是C#、VC还是VB,它能很好的分析。

你可以用Profiler对一个Target做很多事情。最重要的当属函数执行时间的分析,Profiler会给出函数的执行时间,执行次数,执行时间占整个程序的百分比;更强大的是,他 可以给出一个调用树,这样,你可以在Profiler中查看这个程序到底是如何被一步步调用的。查看的过程中,你还能看到这些函数的执行百分比,你可以非常方便的找到最耗时的 函数。一层层的查下去,原来瓶颈就是那个你可能都没有正眼看过的小函数。感谢Profiler,你可以有目的的优化你的程序了。

优化以后,你总得看看效果吧,于是再利用Profiler进行分析,然后呢?Profiler提供结果比较功能,很好很强大。你可以通过这个功能看看你的程序,哪些函数的执行效率提 升了,哪些又降低了。很方便。

不管怎样,有效分析是Profiler最大的特点。于是Profiler提供了两种分析模式供你选择:Sampling 和 Instrument。

Sampling就是采样。通过在程序运行过程中暂停程序,记录堆栈中的信息,然后恢复程序来分析程序。不要看它会暂停程序,它的这种暂停、记录、恢复的速度是非常迅速的, 相对于程序的执行时间可以忽略不计。因此这种模式对程序执行的影响其实是相对较小的。但是由于采样的时间间隔,有些小的执行迅速的函数可能被忽略,不过,如果是为了性 能的提升,那些速度快的函数到并没有什么分析价值。另外一点,因为采样时间是系统的时间,在分析过程中会受到其他程序的影响。比如你在分析过程中打开一个虚拟机,也许 ,那段时间被执行的函数就背上了运行缓慢的黑锅。所以,若要精确分析,就需要Instrument了。

Oh my god,Instrument执行过程超级缓慢,比软件龟行的速度慢多了,这么慢,干了什么?它在程序运行以前,侵入程序中,在每个函数的开头和结尾都嵌入了用于分析的 宏。在执行函数的过程中记录下宏传出来的信息。Instrument的分析用了两套时间。一套和Sampling一样,使用的函数实际执行时间,叫做Application Time;另一套使用的是 Profiler自行提供的时间单位,以程序执行的CPU时间片为基元计算出函数的CPU占用时间,称为Elapsed Time。你可以根据你的需要查看相应的执行时间,因为Instrument提供 的Elapsed Time,你将有足够的证据证明软件缓慢速度的罪魁祸首,有这样铁证的提供,缓慢的分析速度又何惧呢。

在对程序执行过程的分析结束后,Profiler会对刚刚取得的大量数据进行处理,计算函数的执行时间,调用次数,以及函数之间的相互调用关系等信息。最后会得出一份报告。 你拥有报告查看模式的选择权利,你可以选择Summary, Call Tree, Modules, Caller/Callee, Functions, Marks 等等模式来查看这个分析的结果。

有时候你会发现,后期的数据处理怎么如此缓慢呢?有两个原因,第一,确实需要分析的内容太多,程序太大,为了这个庞大软件的更好运行,就忍忍吧,喝杯茶,吃个饭再回 来看结果,另外一种可能,你分析了太多你不需要分析的数据。作为Visual Studio的一个部件,Profiler当然会提供人性化的选项:Launch with profiler paused。这个选 项让你可以忽略不想分析的程序打开过程。直到你需要分析时,Resume之,不需要的时候又可以Pause。为什么有这些选项?因为时间要花在刀刃上……

另外,分析结束后就关掉VS吗?必然不是,一般来说,你当然想要留存一个分析的结果的备份。可是一看生成的那个vsp文件(vsprofiler),几百M甚至上G,你寒心了。于是VS Profiler又提供了一个人性化的选项:Save Analyzed,这个选项在哪?根据可视化编程的原则,当然放在了分析结果(report)的右键菜单中。保存的结果是一个vsps的文件 (你可以自己想想这后缀名什么意思)。如果你还嫌大,那么你可以export。导出成csv文件或者xml文件,他们虽然没有那么丰富的结果查看模式,但是作为性能提升的凭据,应 该足够了。

突然发现,啰嗦了这么多,只是简单的介绍了一个Profiler的常用功能,具体怎么用,还有哪些用得少的小功能,都是一些简单的问题,你可以自己去探索。我建议你从以下一 篇文章开始你的Profiler之旅:《Find Application Bottlenecks with Visual Studio Profiler》,http://msdn.microsoft.com/en-us/magazine/cc337887.aspx这是微软MSDN杂志对Visual Studio Profiler的详细介绍。从软件发展现状到 Profiler介绍到Profiler的使用实例。图文并茂,它也有中文翻译版本:http://msdn.microsoft.com/zh-cn/magazine/cc337887.aspx,你若不喜欢看长篇英文,这个翻译版本也是个不错的选择。

欢迎访问微软官网下载相关软件http://www.microsoft.com/zh/cn/default.aspx

出处:蓝色理想
责任编辑:bluehearts

◎进入论坛网络编程版块参加讨论

作者文章 更多作者文章
中国数字媒体产学研联盟成立
第二届"昆山杯"笔记本电脑设计大赛
首届UED周末论坛图文报道
UI AWARD 2010(国家级UI设计评选)
用vs2010构建Silverlight4应用程序
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
100个黑色名片设计欣赏
MSDN技术资源库改进预览
图标设计欣赏——icondoctor
Web Storage全解析
Photoshop制作音乐网站播放器
解读iPhone平台的设计思路
Web Design广告字体设计技巧
Visual Studio DSL 入门(四)
HTML 5 Video概述
Visual Studio DSL 入门(三)
栏目最新 栏目最新列表
Firefox的Jetpack扩展案例分析
阿里妈妈UED谈CSS Sprites技术
Photoshop中设计绿色时尚Web网站
操作Dom节点实现间歇滚动新闻
浏览器15年历史回顾
如何创建Firefox的Jetpack扩展
全透视:CSS Z-index 属性
用PS 3D工具绘制甜麦圈包装袋
悟道Web标准:让W3C标准兼容终端
悟道WEB标准:统一思想,遵循标准

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我 站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们 联系,我们将立即删除修改。

本文暂时没有评论和评分

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接 导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
《Web标准设计》
闪魂-FlashCS4完美入门与案例精粹
Waver_h's华丽世界
Illustrator CS3质感绘画表现技法
《Flash短片轻松学》
《用户体验要素》
《JavaScript语言精粹》
作品集 更多内容

moto 产品包装 星火第二品牌 练习练习练习 最近做的几个页面 星火少儿网站 金湾名城 印刷网站飞机稿