1

当我的应用程序工作时,我发现它对任何命令都没有响应,并且 CPU 被 100% 使用。我使用了分析器,发现应用程序 99% 的时间都花在了一种方法上(这不是预期的)。

我不确定这个方法是被重复调用还是在内部某个地方“循环”(或者可能是死锁)。

我没有从探查器结果中获得太多信息:

截屏

我不明白为什么两条彼此靠近的线有如此不同的数字(一条为 16%,另一条为 0.2%)。

我怎样才能找出问题出在哪里?

4

2 回答 2

2

要获得更好的分析会话,请使用 Instrumentation :这将告诉您方法被调用了多少次。您还可以使用此“调用层次结构”来检测递归调用。

编辑:它在向导中可用

启动性能向导

于 2012-09-12T18:33:29.637 回答
0

您正在curPrice比较moveTo. 这些属性中的任何一个可能会用于执行大量代码,还是其中一个属性重载了比较运算符?它看起来通常curPrice小于等于它是第一个。moveToskipped...BidcurPrice

这意味着您可以通过找到一种更快的方法来进行这些比较,从而节省多达 32% 的时间。这是 1/(1 - .32) = 1.47 的加速因子,或接近 50%。

我做了很多性能调整,我不使用分析器。我使用这种方法 ,其他一些人也使用这种方法。如果我对这段代码进行 10 个堆栈样本,平均有 3.2 个样本会在堆栈上显示这些比较中的一个或另一个,以及原因。它不会给出确切的百分比,但这并不重要——它们足够大,可以修复。

于 2013-01-28T22:20:24.093 回答