如何在Visual Studio 2008“Pro”中执行性能分析

微软制作了一款名为“Visual Studio 2008 Professional”的软件。 我发现似乎没有应用程序性能分析器或类似的东西,使它看起来不那么“专业”。

如果Microsoft不包含探查器,那么Visual Studio 2008的时间分析的第三方选项是什么? 免费是更可取的,因为这是为了学生目的:P

就个人而言,我使用红门分析器。

其他人则对JetBrains发誓。

这些似乎是选择,它们之间并没有多少。

有一些免费的分析器,不像商业分析器那样完整或精致,但它们可以肯定地帮助很多:

Eqatec – 这是专为Windows CE设计的,但对于普通应用程序来说效果很好。

Soft Prodigy Profile Sharp – 这实际上是一个用c#编写的开源项目,所以你可以根据需要修改它。

我使用JetBrains dotTrace探查器 。 这是一个商业分析器。 (完全披露:我作为MVP获得免费许可。但事实certificate它非常有用。)

还有免费的CLR Profiler for .NET 2.0和一篇解释如何使用它的文章 。

我使用Team System Edition 。 这附带一个非常好的分析器。 还有其他选择:

  • Rational Purify (这是PurifyPlus,但不知道多少)
  • 英特尔Vtune

希望有所帮助。 注意:它们都不是免费的。

快乐剖析:)

下载VS 2008独立命令行分析器http://www.microsoft.com/downloads/details.aspx?familyid=fd02c7d6-5306-41f2-a1be-b7dcb74c9c0b&displaylang=en

RedGate ANTS分析器并不昂贵,而且可以胜任。

我使用JetBrain的dotTrace,效果很好。

答案如下:

重新编辑:你问你的选择是什么。 如果你的心脏被设置为分析,那么寻找一个分析器。

另一方面,如果您确实遇到性能问题,那么简单方法与几乎每个分析器一样好或更好。 我说的几乎每一个,因为在一些分析器中你实际上可以梳理出你需要知道的东西,这是由个别指令引起的时间成本,尤其是通话指令。

指令的时间成本是指令可以被删除时保存的时间量,并且对它的良好估计是包含它的调用栈样本的分数。 您无需高精度地估计该分数。 如果指令是10个样本中的5个,那么它的成本可能在45%到55%的范围内。 无论如何 – 如果你能摆脱它,你会节省它的成本。

因此,发现性能问题并不难。 只需获取一些调用堆栈样本,收集这些样本上的指令集,并按照包含它们的样本分数对指令进行排序。 高分数指令中有一些是你可以优化的,而你不必猜测它们在哪里。

我有点简化,因为通常检查更多的状态信息比调用堆栈更有用,看看是否真的有必要完成一些工作。 但我希望能够提出这一点。

人们表示怀疑它可以在递归的情况下工作,或者在大型程序上工作。 一点思考(和实验)表明这些反对意见并不成立。