如何在vs2008 / 10中分析特定的代码块?

时间:2011-10-18 15:41:08

标签: visual-studio visual-studio-2010 visual-studio-2008 profiling

我对分析的想法完全不熟悉,有人能给我一些关于如何分析特定功能的简单步骤吗?

两个函数都做同样的事情,但一个是vs2008中的C#,另一个是vs2010中的其他C ++。我真的对C ++函数感兴趣,因为它非常慢,我想知道在哪里/为什么。感谢。

2 个答案:

答案 0 :(得分:2)

  

关于如何分析特定功能的简单步骤

我使用的方法是random pausing,可能更好地称为poor man's profiler(在我看到它们如何聚合之前我喜欢它)。 这是another link。 您不必告诉它要查看哪些具体功能。 它会自动查找花费最多时间的内容,无论是该功能还是其他功能。

关于它的事情是,与“真正的”剖析器相比,有些人可能会说它是粗糙的,乏味的等等。 那为什么呢?

因为它有效

你可以解决你的问题,直到具体说明,并知道要解决什么问题,然后才能开始解决大多数剖析器产生的大量问题 - 自我时间,通话计数,呼叫树,呼叫图,“热门路径“,”cpu time“,etc. etc.

任何探查者要问的事情并不是“准确”,而是

  • 在真实(非玩具)程序中使用它通常可以达到多少加速?

这不是你关心的吗?

Here's an example使用随机暂停进行了43倍的加速。

答案 1 :(得分:0)

这是一个想法。编写一个重复调用此函数的测试应用程序,尽可能少做其他事情。然后使用您的两个版本的函数创建两个可执行文件。现在在两个可执行文件上运行Very Sleepy探查器,并比较结果。分析器将向您显示每个功能的缓慢部分。

您可能觉得有用的另一个分析器是Shiny。它以完全不同的方式工作。您必须在要分析的代码的函数或部分中插入调用,然后编译启用了特定探查器的应用程序版本。