我最近发现我编写的程序非常慢,为了修复它,我想分析一下它。到目前为止,我选择的工具是Yourkit和hprof,但是我也没有找到我想要的功能。
理想情况下,我希望为我的所有源文件提供一个MATLAB Profiler风格的热图,更强的颜色表示在这一行中花费了更多的时间。我意识到这是一个很大的要求,所以如果它不存在,我不会感到惊讶。
如果以上不可能,我想要的是能够执行hprof cpu=samples样式分析,但我不想泄露项目中执行的所有类的所有方法的列表,我希望能够排除名称空间(例如:Java.java)。并在堆栈中调用方法而不是在排除的命名空间中调用的堆栈中的最低级别对这些方法进行属性化。例如,如果我有以下内容
def sillyMethod: Unit = {
0.until(1000000).map{ i =>
(0 until 1000).toSeq + 1) == ( 0 until 1000).toSeq + 2 )
}
}我更愿意知道,我所有的时间都花在sillyMethod上,而不是在Seq.equals上。任何可用的分析器都能做到这一点吗?
编辑:我目前正在使用sbt执行命令和实际编辑的IntelliJ想法。
发布于 2011-10-28 02:14:50
我已经很长时间没有看过你的工具包了,但是如果它的分析器不能排除包或者限制剖析包,我会很惊讶。JVM实际上附带了一个不太坏的分析器。视景包含在jdk中。请注意,分析页面上的第二个屏幕截图在底部有一个“只配置文件类”部分,因此如果您只将包放在其中,那么您将不再分析其他任何内容,或者您可以深入分析特定的包或类。
发布于 2011-10-28 09:53:13
JProfiler有一个调用图,可以在类和包聚合级别上操作。

如果在会话设置中指定顶级包,则不会看到Scala类的任何内部结构。

免责声明:我公司开发JProfiler
https://stackoverflow.com/questions/7924255
复制相似问题