Visual Studio--Profiler分析程序性能

Visual Studio 2017 RC的最新文档,请参看https://docs.microsoft.com/zh-cn/visualstudio/.

你可以使用Visual Studio Profiling工具来分析你的应用程序中的性能问题。本文展示了如何使用采样数据。

采样是一种统计学习方法,可以向你展示:在应用中,那一部分做了绝大多数的用户模型工作。采样是一个很好的方式用来寻找从哪里可以加速你的程序。

在指定的时间间隔,采样方法收集在应用程序中执行的函数的信息。当你完成一个分析的运行后,被分析的数据的摘要视图展示了最活跃的函数,称之为Hot Path,应用程序中的大多数的工作被执行。视图还列出了执行功能的最独特的工作,并且提供了一个时间线的图表,你可以使用这个图标只考虑其中一部分的抽样结果。

如果采样的方法不能给你你想要的结果,其他的分析工具收集方法能够提供不同的信息,可能对你有帮助,关于这些方法的更多信息请参看 https://msdn.microsoft.com/en-us/library/ms182374.aspx


小贴士:

如果你的配置文件的代码调用Windows函数,你应该确保你有最新的PDB文件。没有这些文件,你的报告视图将会列出Windows函数的名字,它们往往很神秘并且很难理解的。关于更多的如何确保你有你需要的文件的信息请参考:https://msdn.microsoft.com/en-us/library/89axdy6y.aspx


创建并且运行一个性能会话

为了得到你需要分析的数据,你必须首先创建一个性能会话,然后运行这个会话,性能向导可以使你两者兼顾。

如果你不是分析一个Windows桌面应用程序或asp.net应用程序,你必须使用其他的某一种分析工具,参看 https://msdn.microsoft.com/en-us/library/mt210448.aspx.

步骤一:为了创建并且运行一个性能会话:

1.在VS中打开解决方案,设置配置为Release。(在工具栏中找到“解决方案配置”,把Debug改成Release)

注意:如果你不是你正在使用的这台电脑的管理员,当你使用profiler的时候你应该以管理员的身份运行VS。(右击VS的运行图标,然后点击“以管理员身份运行”)

2.在“调试”菜单中,单击“性能分析器”

3.单击“性能向导”选项,并单击“开始”

4.单击“CPU采样”选项,单击“完成”

5.你的应用程序启动,并且分析器开始收集数据

6.操作功能可能包含性能问题

7.如你通常所做的,关闭应用程序


当你运行完成这个应用后,被分析数据的摘要视图出现在VS的主窗口中,新的会话图标出现在性能探测器窗口。

步骤二:分析采样数据

当你完成一个性能会话时,分析报告的摘要视图出现在VS的主窗口中。

我们建议你从检查Hot Path开始分析你的数据,函数列表就是做的绝大多数的工作,最后通过使用摘要时间表分析其他函数。你可以查看配置建议和错误列表中的警告。

请注意,抽样方法可能不能给你你所需要的信息。例如,只有当应用程序正在执行用户模式代码时采样才会被收集。因此,一些功能,例如输入和输出操作,是不能被采样的。分析工具提供了一些方法的集合,能够使你专注分析一些重要的数据。有关其他方法的更多信息请参看https://msdn.microsoft.com/enus/library/ms182374.aspx.

图中的每一个标号区域对应一个过程的步骤:


为了分析采样数据:

1.在摘要视图中,Hot Path展示了你的应用程序中具有最高包容样本的分支。当数据被收集时,这是最活跃的执行路径。高包容值可以表明该算法生成的调用树可以优化。发现代码中的函数中的最短路径,注意,路径可以包括系统功能和在外部模块中的系统功能。


(1)Inclusive Samples:表明函数做了多少工作,以及哪些函数调用它。高包容性计数指向函数最昂贵的整体。

(2)Exclusive Samples:表示多少工作是由函数体中的代码做的,不包括调用它的函数做的工作。高独家计数表示函数本身的性能瓶颈。

2.单击函数名称来显示分析数据的功能细节视图。功能细节视图提供了一个分析数据的图形化视图选择功能,显示该函数调用的所有函数以及调用该函数的所有函数。

调用函数和被调用函数的块的大小表示函数调用的相对频率。

你可以单击调用函数或被调用函数的名称,使其显示所选函数的函数细节。

较低的平面的功能细节窗口显示功能代码本身。如果你检查代码发现一个优化其性能的机会,单击原文件的名字,从而在VS的编辑器中打开该文件。

3. 继续你的分析,通过在视图的下拉列表中选择 Summary回到摘要视图。然后在Functions Doing the Most Individual Work中检查函数。这个列表显示具有最高独家样本的函数。这些函数中的函数体的代码执行重要工作,你可以对其进行优化。为了进一步分析一个特定的功能,单击函数的细节视图来显示它。

继续你的调查分析,你可以重新分析被分析数据的一段,通过使用摘要视图中的时间线,向你展示被选择部分的Hot Path和Functions Doing Most Individual Work,关注于时间线上的一个小的峰值,这可能会揭示出昂贵的调用树和函数,这些内容在整个分析运行中可能没有显示。

为了重新分析一小段,在时间线中选择一小段,然后单击Filter by Selection。


4.分析器还使用一套规则提出改善分析运行的方式,并确定可能的性能问题。如果找到一个问题,在错误列表中就会显示一个警告窗口。

视图菜单上单击错误列表,然后打开错误列表窗口。

为了看到这个有错误的函数,提出了一个警告功能的细节视图中,双击警告。

为了查看详细信息警告,右击错误,然后单击显示错误帮助


步骤三:修改代码并重新运行会话

在你发现有一个或多个功能可以进行优化时,你可以重复运行分析并比较数据的差异,从而得到你更改后的应用程序的性能。

修改代码并重新运行分析器

1.修改你的代码

2.为了打开Performance Explorer。在Debug菜单中单击“Profiler”,然后单击“ Performance Explorer ”,然后单击“Show Performance Explorer

3.在Show Performance Explorer中,右击你想运行的会话,然后单击“启动与剖析”

4.你重新运行一个会话以后,另一个数据文件就会被添加到报告文件夹中,选择原始的分析数据和新的分析数据,右击选择,然后单击“比较性能报告”

一份新的报告在窗口中打开,显示比较结果。关于如何使用比较视图的更多信息,参看:https://msdn.microsoft.com/en-us/library/bb385753.aspx

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Visual Studio ProfilerVisual Studio中集成的性能分析工具。它可以帮助开发人员分析程序中各个函数调用所占用的时间,并生成简洁易读的报告。\[3\]它提供了两种检测方式:Sample和Instrumentation。Sample方式通过采样程序的执行状态来获取函数调用的信息,而Instrumentation方式则是在程序中插入额外的代码来记录函数调用的时间。这些信息可以帮助开发人员找到应用程序的瓶颈,优化性能。\[3\]要使用Visual Studio Profiler,需要安装Visual Studio的某些版本,如Team系列的VS或Ultimate版本。\[2\]如果你想了解更多关于Visual Studio Profiler的详细介绍和使用实例,可以参考微软MSDN杂志上的文章《Find Application Bottlenecks with Visual Studio Profiler》。\[1\] #### 引用[.reference_title] - *1* *2* [应用程序性能分析利器 —— Visual Studio Profiler](https://blog.csdn.net/weixin_30354675/article/details/96721714)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [使用Visual Studio Profiler分析程序性能](https://blog.csdn.net/huyiyang2010/article/details/5935522)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值