0

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

4

2 回答 2

1

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

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

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

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

我是怎么找到的?旧方法,与此处相同在此处进行说明

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

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

在 N 个总样本中的 S 个样本上查看某些东西的成本的 Beta 分布。

Beta 分布 X ~ Be( number of hits + 1, number of misses + 1 )图和加速比 = 1/(1-X)。)

于 2012-03-12T19:47:19.903 回答
0

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

于 2012-03-19T00:08:26.157 回答