0

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

我有一个方法:

public double FooBar(ClassA firstArg, EnumType secondArg)
{
    [...]

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

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

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

4

1 回答 1

2

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

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

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

于 2013-02-04T14:04:15.163 回答