是否可以通过其API调用Eqatec Profiler的一部分方法?

问题描述:

我正在使用Equatec分析器来诊断我的应用程序的缓慢过程。我想出了哪种方法很慢,但我想知道该方法的哪一部分很慢。除了将方法分解为多种方法外,还有一种方法可以通过Eqatec Profiler API来标记要与整个方法分开分析的方法的特定部分?是否可以通过其API调用Eqatec Profiler的一部分方法?

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

你可能会发现一个活动很好的例程,比如20%,你甚至可能会在里面找到一个特别的“热”线,但是你可以看看它并且不知道该怎么做它,因为据你所知,这是必要的。

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

如果我只举一个例子,我已经看到一个应用程序花费大约50%的启动时间在调用堆栈中的20-30个层次从资源获取字符串,以便它可以将它们显示给用户让他们知道需要这么长时间。如果它找到了另一种方式来做到这一点,它会启动两倍的速度!蚂蚁探查器(另一个很好的)给出没有线索至于发生了什么。

我是如何找到它的?旧的方法,相同的方式it's done here,并且是explained here

下图所示,如果手动采样栈N次,通过暂停程序,对那些你看它做什么样的你可以用一些替代更快,时间的量即可期望保存,并且相应的加速比。例如,红色曲线(2/5)意味着如果你拿了五个堆栈样本,并且你看到了其中两个可以改进的东西,那么你不知道你将节省多少钱。然而,最有可能的值是2/5(40%,加速67%),平均值是3/7(43%,加速75%),并且它的范围大概在10%之间(加速11% )和70%(加速3.33倍)。如果你认为你不能相信少量的样品,那就是这种情况。 不是一个糟糕的赌博。 如果您想要更多的确定性,请采取更多样本。

Beta distribution of cost for seeing something on S samples out of N total samples.

+0

EQATEC Profiler会检测到您的“启动时间20-30层深”示例:它总是向您显示罪魁祸首,即总共占用大部分时间的方法,并且不会因昂贵的方法被从许多其他方法调用。我认为这是一个非常强大的功能。 – 2012-03-19 00:16:08

+0

@Richard:如果您还记得,我无法运行EQATEC,但我可以运行ANTS。也许ANTS只是EQATEC的影子,我不知道,但它的工作原理与测量方法百分比的原理相同。那就是问题所在。有很多方法,叫或不叫,高百分比。你看着他们,他们都看起来非常好。直到你把测量放在一边,而不是及时地检查一些深层样本,并问“为什么这一刻被花费了?”。问题出现。测量不会给出原因,没有它们,问题就不会出现。 – 2012-03-19 02:14:58

+0

我认为蚂蚁是一个很好的分析器,但它显然可以被你的例子欺骗。 EQATEC分析工作者不是只考虑调用树和百分比,而是考虑每种方法的总数,因此占用大部分时间的人将“冒泡”到犯罪嫌疑人名单的首位。 (顺便提一下,你的问题当时是由签署的程序集引起的 - 如果你重新签署或跳过这些程序,那么它应该可以工作) – 2012-03-19 07:22:49

(的Beta distributionX ~ Be(number of hits + 1, number of misses + 1)和提速= 1 /(1-X)图解。)由于当前版本3.8.14:没有,这是不可能的。这将是一个美妙的改进,但它不在EQATEC的直接路线图上。