jprofiler或其他:如何汇总递归方法调用?

Sea*_*son 8 java recursion profiling rollup jprofiler

我有一个很长的操作,我想在JProfiler(或其他建议)中分析,但该方法是非常递归的,因此CPU视图中的树视图没有太大帮助.它显示了我这样的CPU时间:

beginOperation 100%
|- recursiveMethod 99%
| | - recursiveMethod 98%
| | | - recursiveMethod 97%
| | | | - ...more recursion
| | |- otherMethods 1%
| | - otherMethod 1%
| - otherMethods 1%
Run Code Online (Sandbox Code Playgroud)

你看,recursiveMethod真的不需要任何时间.相反,它otherMethods占用了时间,是我想要描述的.我理想的观点显示recursiveMethod接近0%的时间,并且otherMethods合并到接近100%.

那么在JProfiler中是否有任何方法可以将此视图向上滚动,以便我可以更清楚地查看我的CPU时间花费在哪里?有没有人建议另一个可以做到这一点的探查器?

注意:我正在使用JProfiler 6,但如果另一个版本可以执行此操作,则可能会升级.

谢谢!

Jas*_*man 2

JProfiler 有一个“热点”视图,对于收集这些类型的性能指标非常有用。要访问此视图,请转到左侧导航栏中的“CPU 视图”,“热点”应该是应用程序窗口底部左侧的第二个按钮。(这些说明基于 JProfiler 5,但我相信这在版本 6 上是相同的)。

您可以按固有时间(可能是您正在寻找的)、平均时间和调用进行排序,然后从进行这些昂贵调用的位置开始跟踪调用堆栈。在视图顶部,还有一个用于更改“热点类型”的下拉菜单,因此您可以查看 JDBC 查询、调用的 URL 和许多其他选项所消耗的时间。