我正在尝试评估我正在编写的程序的性能。
我有一个方法:
public double FooBar(ClassA firstArg, EnumType secondArg)
{
[...]
如果我在VS Performace Analyzer中检查FooBar中的功能详细信息,我可以看到该方法占总时间的14%(包括端点),并且该方法本身的花费了10%。我无法理解的是,看起来总时间的6.5%(包括和包含)都花费在这个方法的开放支撑上;它实际上是代码中最耗时的一行(作为独占时间问题)。
该方法不会覆盖任何其他方法。使用采样在调试配置中完成分析,运行持续约150s,6.5%对应于总计48000中的3000多个样本。
有人可以解释一下这行中发生了什么,是否有办法改善这种行为?
答案 0 :(得分:2)
在方法的第一个打开的花括号中显示了方法初始化所花费的时间。
在方法初始化期间,分配并初始化局部变量。 请注意,如果在正文中间声明了方法的所有局部变量,则在执行之前对其进行初始化。
为了减少初始化时间,请尝试将局部变量移动到堆中,或者如果它们仅在有时使用(如if分支中的变量或返回之后),则将使用它们的代码段提取到另一个方法。