我对Visual Studio Profiler的性能分析印象深刻。快速为我的目的和易于使用。
我很想知道visual studio profiler中的警告。对于Windows应用程序是否有更好的分析器,哪些更适合这些警告?
答案 0 :(得分:5)
从积极的方面来看,没有人会像微软那样制作出色的应用。 Visual Studio是一个很好的产品,它的探查器共享这些属性。
另一方面,有一些警告(其他探查者也分享)。
在采样模式下,线程被阻止时不会采样。因此,对于无关的I / O,套接字调用等是盲目的。这是一个属于早期教授和 gprof 的属性,最初是作为PC采样器开始的并且由于当PC被阻止时没有意义,因此关闭了采样。 PC可能没有意义,但是堆栈确切地说明了线程被阻止的原因,当有很多时间进入时,你需要知道它。
在检测模式下,它可以包含I / O,但它只提供功能级别的时间百分比,而不是行级别。如果功能碰巧很小,或者他们只在少数几个地方互相呼叫,那可能没问题,所以找到呼叫站点并不是太难。我和优秀的程序员合作,但我们的代码并非都是这样。实际上,通常调用站点是不可见的,因为它们是编译器插入的。另一方面,无论是谁写的,堆栈样本都会精确定位这些调用。
分析器很好地向您展示了不同线程活动之间的分离。那么你需要知道的是,如果一个线程被挂起或显示一个低处理器活动,那是因为它阻塞了它实际上不需要的东西吗?堆栈样本可以告诉您,如果他们可以在阻止期间采取。另一方面,如果一个线程严重起动,你知道它正在做什么实际上是必要的还是可以减少的?堆栈样本也会告诉你。
许多人认为剖析仪的主要工作是衡量。就个人而言,我想要一些能够精确定位代码的代码,这些代码需要花费大量时间才能更有效地完成。大多数情况下,这些是功能调用站点,而不是“热点”。我不需要精确地知道“很多时间”。我知道它是60%+ / - 20%,这对我来说非常好,因为我正在寻找问题,而不是测量。如果由于这种不精确,我解决了一个不是最大的问题,那没关系,因为当我重复这个过程时,最大的问题会更大,百分比,所以我不会错过它。