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

Posted

技术标签:

【中文标题】Visual Studio 性能分析器:开括号上的行数【英文标题】:Visual Studio Performance Analyzer: Line count on open brace 【发布时间】:2013-02-04 10:53:08 【问题描述】:

我正在尝试评估我正在编写的程序的性能。

我有一个方法:

public double FooBar(ClassA firstArg, EnumType secondArg)

    [...]

如果我在 FooBar 的 VS 性能分析器中检查函数详细信息,我可以看到该方法占总时间的 14%(包括在内),而这 10% 花费在方法本身的主体中。我无法理解的是,看起来总时间的 6.5%(包括和不包括在内)都花在了这种方法的大括号上;它实际上是代码中最耗时的一行(作为专有时间问题)。

该方法没有覆盖任何其他方法。分析是在调试配置中使用采样完成的,运行持续大约 150 秒,其中 6.5% 对应于总共 48000 个样本中的 3000 多个样本。

有人能解释一下这行发生了什么吗?是否有办法改善这种行为?

【问题讨论】:

【参考方案1】:

在方法的第一个大括号中显示了方法初始化所花费的时间。

在方法初始化期间,局部变量被分配和初始化。 请注意,方法的所有局部变量都在执行之前初始化,如果在主体中间声明。

为了减少初始化时间,尝试将局部变量移动到堆中,或者,如果它们只是偶尔使用(如 if 分支中的变量或返回后的变量),则将使用它们的代码段提取到另一个方法中。

【讨论】:

以上是关于Visual Studio 性能分析器:开括号上的行数的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 性能分析

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

Visual Studio 性能分析:JavaScript

Visual Studio代码性能分析工具

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

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