了解探查器性能收集方法

本文档概述了 Visual Studio 性能探查器中的工具所利用的数据收集方法。

采样

采样收集有关应用程序在分析期间执行的工作的统计数据,这是寻找可以加速应用程序的领域的一个很好的起点。 在指定的时间间隔,“采样”方法收集有关应用程序中正在执行的函数的信息。 数据收集的完成方法是:按固定间隔或采样频率(例如每毫秒)收集有关应用程序的信息。 分析这些数据来创建在应用程序中时间花费情况的模型。 如果需要准确测量调用次数或首次在应用程序中查找性能问题,则可能需要使用采样。

采样在调用数方面的准确度较低,但对探查器而言成本较低,并且对正在分析的应用程序的执行几乎没有影响。 性能探查器中利用采样方法的工具包括 CPU 使用率工具。

完成数据收集后,CPU 使用率工具将分析捕获的数据并显示报表。

跟踪

跟踪提供有关方法执行频率的更准确的信息。 如果需要准确地度量调用数,请使用跟踪。 在收集期间,跟踪可能会对代码的性能产生更大的影响,但采样的开销很小。 此外,跟踪分析速度可能会更慢,因为收集后查看数据需要更长时间。

检测

检测分析收集有关应用程序在分析运行过程中执行的工作的详细信息。 数据收集是通过工具来完成的,这些工具将代码注入到可捕获计时信息的二进制文件中,或通过使用回叫挂钩在应用程序运行期间收集和发出精确计时和调用计数信息。 与基于采样的方法相比,检测方法的开销较大。 性能探查器中使用检测的工具包括检测工具和 .NET 对象分配工具。

采样与检测

采样的价值在于它的开销较少,因此更有可能在统计上代表生产中运行的应用程序。 检测分析的价值在于你可以获取调用函数的确切调用计数。 相比于普通采样,这可为你提供更详细的信息,从而减少在某些情况下花费的时间。 例如,不执行大量操作但经常被调用的函数的显示次数将比实际情况多。

使用检测时,会对在应用程序中选择的每个函数调用添加批注并进行检测,以便在调用它时,它会连同有关调用方的信息一起添加到跟踪中。 使用采样时,将按一定的时间间隔从 CPU 轮询当前的调用堆栈,然后将每个帧添加到跟踪中。