我正在使用Equatec分析器来诊断我的应用程序的缓慢过程。我想出哪个方法很慢,但我想知道具体方法的哪个部分很慢。除了将方法分解为多个方法之外,还有一种方法可以通过Eqatec Profiler API标记要与整个方法分开进行分析的方法的特定部分吗?
答案 0 :(得分:1)
Equatec是一个很好的分析器,但根据我的经验,这是在一个大小的.net应用程序中发生的事情。
您可能会发现一个例程在很长一段时间内都处于活动状态,例如20%,您甚至可能会在其中找到特定的“热门”线,但您可以查看它并且不知道如何处理它,因为据你所知,这是必要的。
与此同时,代码中潜藏的东西可能比在分析器中没有真正显示的代码更大,因为它不仅限于一个例程。
如果我只举一个例子,我看到一个应用程序花费大约50%的启动时间在调用堆栈中20-30级深度从资源获取字符串,这样它就可以显示给用户让它们让他们知道这花了很长时间。如果它找到另一种方法,它会启动两倍的速度! ANTS分析器(另一个好的分析器)对于发生的事情给出了无线索。
我是怎么找到的?旧方法,方式it's done here,explained here。
下图显示,如果您手动对堆栈进行N次采样,暂停程序,并在两个这些样本上,您会看到它执行的操作可以更快地替换,金额你可以期待保存的时间,以及相应的加速比。
例如,红色曲线(2/5)表示如果您采用五个堆叠样本,并且您看到其中两个样本可以改进,您不确切知道将节省多少。然而,最可能的值是2/5(40%,加速67%),平均值是3/7(43%,加速75%),并且它将在大约10%的范围内(加速11%) )和70%(加速3.33倍)。如果你认为你不能相信少量的样品。 赌博也不错。 如果您想要更多确定性,请采取更多样本。
(Beta distribution X ~ Be( number of hits + 1, number of misses + 1 )
和加速= 1 /(1-X)的情节。)
答案 1 :(得分:0)
截至当前版本3.8.14:不,这是不可能的。这将是一个很好的改进,但它不是EQATEC的直接路线图。