Windows应用程序的性能分析。 Visual Studio Profiler更好的select?

Visual Studio Profiler为性能分析留下了深刻的印象。 快速为我的目的和易于使用。

我只是想知道在Visual Studio Profiler的警告。 有没有更好的分析器的Windows应用程序更好的这些警告?

从积极的方面来说,没有人会像微软那样做出很棒的应用 Visual Studio是一个很好的产品,它的分析器共享这些属性。

另一方面,还有一些注意事项(其他人也可以分享)。

  • 在采样模式下,线程被阻塞时不会采样。 因此,对于无关的I / O,套接字调用等是盲目的。这是从profgprof早期开始的属性,其起始于PC采样器,并且由于当被阻塞PC时没有意义,采样被关闭。 个人电脑可能是没有意义的, 但是堆栈告诉了为什么线程被阻塞 ,当有很多时间进入时,你需要知道它。

  • 在仪表模式下,它可以包含I / O,但是它只能给你提供函数级的时间百分比,而不是线级。 如果功能很小,或者只是在很少的地方互相呼叫,那么这可能是确定的,所以寻找呼叫站点不是太难。 我和好的程序员一起工作,但是我们的代码并不是那样的。 事实上,呼叫站点通常是不可见的,因为它们是编译器插入的。 另一方面,堆栈示例指出这些调用,不管是谁写的。

分析器在向您显示不同线程活动之间的分隔方面做得很好。 那么你需要知道的是,如果一个线程被挂起或显示一个低处理器活动,那是因为它阻塞了一些它并不是真的必须的东西? 堆栈样本可以告诉你,如果他们可以在阻塞期间被采取。 另一方面,如果一个线程大量启动,你知道它正在做什么实际上是必要的或可以减少? 堆栈样本也会告诉你。

许多人认为一个分析器的主要工作是衡量。 就我个人而言,我想要一些能够确定代码花费大量时间并且可以更高效地完成的代码。 大多数时候这些都是功能呼叫站点,而不是“热点”。 我不需要精确地知道“很多时间”。 我知道这是60%+/- 20%,这对我来说是完美的,因为我正在寻找问题,而不是测量。 如果由于这种不精确,我解决了一个不是最大的问题,没关系,因为当我重复这个过程时,最大的问题会更大,所以我不会错过它。