如何在 Visual Studio 性能分析器中查看毫秒而不是 % 样本

Posted

技术标签:

【中文标题】如何在 Visual Studio 性能分析器中查看毫秒而不是 % 样本【英文标题】:How to see milliseconds in Visual Studio Performance Analyzer instead of % samples 【发布时间】:2013-06-26 02:14:53 【问题描述】:

我正在尝试使用 Visual Studio 性能分析器分析我的程序,但我是这个工具的新手。

如果我在分析器中启动我的程序,我会得到一份报告,其中我会看到一个函数所花费的总分析时间的百分比。但是总时间可能在 5 秒到 500 秒之间变化,那么我如何查看我的优化是否有任何效果呢?

如果它以毫秒为单位,我不会有这个问题,但我找不到任何像“以毫秒为单位显示”或类似的功能。有这样的功能吗?

【问题讨论】:

【参考方案1】:

Visual Studio Profiler 中有两种不同的 CPU 分析方法:SamplingInstrumentation

采样(默认)

采样分析方法以设定的时间间隔中断计算机处理器并收集函数调用堆栈。正在执行的函数的独占样本计数递增,调用堆栈上的所有调用函数的非独占计数递增。抽样报告显示了分析模块、函数、源代码行和指令的这些计数的总数。

采样方法是轻量级的(二进制文件中没有变化)并且对应用程序方法的执行几乎没有影响:它仅收集有关应用程序在运行期间执行的工作的统计数据分析会话。

这对初步探索很有好处。高 % 可能意味着函数速度慢或调用过于频繁。

仪器

仪器分析方法收集分析应用程序中函数调用的详细时间。如何?它注入代码,捕获检测文件中每个函数的时间信息以及这些函数进行的每个函数调用。 Instrumentation 还识别函数何时调用操作以进行诸如写入文件之类的操作。

在报告中,您将看到应用程序时间(执行一段代码所花费的总时间,但不包括调用操作系统、ado.net、服务调用...所花费的时间)和已用时间(执行一段代码所花费的总时间)。

这种分析模式也有更高的运行时开销。这不可避免地会稍微改变应用程序的性能特征,但影响很小。

只有这个选项可以让你看到毫秒。因此,在性能资源管理器的向导中更改分析方法。另请注意,此选项有时不可用,例如在分析单元测试时。

【讨论】:

以上是关于如何在 Visual Studio 性能分析器中查看毫秒而不是 % 样本的主要内容,如果未能解决你的问题,请参考以下文章

带你玩转Visual Studio——性能分析与优化

在 Visual Studio 2013 中为性能分析器设置环境变量

如何在 Visual Studio (C++) 中设置发布分析

Visual Studio 性能分析:Application.DoEvents()

Visual Studio 性能分析器:开括号上的行数

如何在 Visual Studio CPU 分析中获取函数名称而不是地址?