【问题标题】:Is it possible to profile part of a method with Eqatec Profiler through its API?是否可以通过其 API 使用 Eqatec Profiler 分析方法的一部分?
【发布时间】:2012-03-27 09:17:27
【问题描述】:

我正在使用 Equatec 分析器来诊断我的应用程序的缓慢进程。我弄清楚了哪种方法慢,但我想具体知道该方法的哪一部分慢。除了将方法分解为多个方法之外,还有没有办法通过Eqatec Profiler API 标记方法的特定部分,以便与整个方法分开分析?

【问题讨论】:

    标签: .net profiling eqatec


    【解决方案1】:

    Equatec 是一个很好的分析器,但根据我的经验,这是在大型 .net 应用程序中发生的情况。

    您可能会发现一个例行程序在相当多的时间里处于活跃状态,例如 20%,您甚至可能会在其中找到一个特定的“热”行,但您可以看着它,却不知道该怎么做,因为据您所知,这是必要的。

    同时,代码中可能存在比代码更大的东西,而在分析器中并没有很好地显示出来,因为它并不局限于一个例程。

    如果我只能举一个例子,我已经看到一个应用程序将大约 50% 的启动时间花费在调用堆栈深处的 20-30 层中,以便从资源中获取字符串,以便将它们显示给用户让他们知道什么需要这么长时间。如果它找到另一种方法来做到这一点,它会以两倍的速度启动! ANTS 分析器(另一个不错的)不知道发生了什么。

    我是怎么找到它的?旧方法,it's done here,同样是explained here

    下图显示,如果您通过暂停程序手动对堆栈进行 N 次采样,并且在其中 两个 的示例中,您看到它正在执行一些您可以用更快的东西替换的操作,数量您可以节省的时间,以及相应的加速比。

    例如,红色曲线 (2/5) 表示,如果您采集了 5 个堆栈样本,并且您看到其中两个可以改进,您不知道具体可以节省多少。然而,最有可能的值是 2/5(40%,加速 67%),平均值是 3/7(43%,加速 75%),它大约在 10% 之间(加速 11% ) 和 70%(加速 3.33 倍)。那是在你认为你不能相信少量样本的情况下。 不是一场糟糕的赌博。 如果您想要更多的确定性,请采集更多样本。

    Beta distributionX ~ Be( number of hits + 1, number of misses + 1 ) 和 Speedup = 1/(1-X) 的绘图。)

    【讨论】:

    • 您的“启动时间 20-30 级深度”示例将被 EQATEC Profiler 检测到:它始终向您显示罪魁祸首,即总耗时最长的方法,并且不会被事实上,昂贵的方法是从许多其他方法中调用的。在我看来,这是一个非常强大的功能。
    • @Richard:如果你还记得,我无法在其上运行 EQATEC,但我能够运行 ANTS。也许 ANTS 只是 EQATEC 的影子,我不知道,但它的工作原理与测量方法百分比的原理相同。那就是问题所在。有很多方法,无论是否调用树,都具有很高的百分比。你看着它们,它们看起来都非常好。直到您搁置测量,而是及时检查一些深度样本并问“为什么要度过这一刻?”问题出现。测量没有给出原因,没有它们就不会出现问题。
    • 我认为 ANTS 是一个很好的分析器,但它显然会被你的例子所欺骗。 EQATEC 分析器不是只考虑调用树和百分比,而是查看每个方法的总数,因此那些占用最多时间的将“冒泡”到嫌疑人列表的顶部。 (顺便说一句,您当时的问题是由签名的程序集引起的 - 如果您重新签名或跳过这些,那么它应该可以工作)
    • @Richard:对不起,我还没有机会去追求它。这很孤独,但我建议另一种范式:如果只寻找花费最多时间的方法(甚至代码行),那么为了加快速度而需要修复的一些事情将完全错过。我一直在想我是不是错了,but it's true. 通过测量例行程序的时间,你会看到一些东西而错过其他东西。然后,那些被遗漏的就是那些在其他人被移除时变得占主导地位的人。要找到它们,需要及时检查,而不是测量。试试看。
    • 好的,假设 90% 的启动时间花在 10 种方法上,例如本地化或字符串操作等。分析器会立即向您显示(不管他们的调用树或“深层次”!),您可以理想地优化它们。确实,其他一些方法将成为主导,但老实说,我不明白为什么你认为它们会仍然“被遗漏”:优化掉 10 种方法后,新的主导方法现在将简单地排在列表的顶部,准备好迎接您来承担、调查和优化。
    【解决方案2】:

    从当前版本 3.8.14 开始:不,这是不可能的。这将是一个很棒的改进,但它不在 EQATEC 的近期路线图中。

    【讨论】:

      猜你喜欢
      • 2010-09-27
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      相关资源
      最近更新 更多