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