针对特定软件包的Scala/Java评测

针对特定软件包的Scala/Java评测,java,scala,profiling,Java,Scala,Profiling,我最近发现我写的一个程序出奇地慢,为了修复它,我想对它进行分析。到目前为止,我选择的工具是Yourkit和hprof,但我还没有找到我在其中寻找的功能 理想情况下,我希望我的所有源文件都有一个颜色,颜色越深表示花在这一行上的时间越多。我意识到这是一个很大的要求,所以如果它不存在,我不会感到惊讶 如果上述方法不可行,我希望能够执行hprof cpu=samples样式的评测,但是我希望能够排除名称空间,例如java.,scala.collection,而不是列出项目中执行的所有类的所有方法的列表。

我最近发现我写的一个程序出奇地慢,为了修复它,我想对它进行分析。到目前为止,我选择的工具是Yourkit和hprof,但我还没有找到我在其中寻找的功能

理想情况下,我希望我的所有源文件都有一个颜色,颜色越深表示花在这一行上的时间越多。我意识到这是一个很大的要求,所以如果它不存在,我不会感到惊讶

如果上述方法不可行,我希望能够执行hprof cpu=samples样式的评测,但是我希望能够排除名称空间,例如java.,scala.collection,而不是列出项目中执行的所有类的所有方法的列表。并将属于这些方法的任何时间重新分配到堆栈中的最低级别,在该堆栈中,方法不是在排除的命名空间中调用的。例如,如果我有如下内容

def sillyMethod: Unit = {
   0.until(1000000).map{ i => 
      (0 until 1000).toSeq + 1) ==  ( 0 until 1000).toSeq + 2 )
   }
}
我宁愿知道我所有的时间都花在了sillyMethod上,而不是Seq.equals上。使用任何可用的探查器都可以这样做吗


编辑:我目前正在使用sbt执行我的命令和IntelliJ IDEA进行实际编辑。

我已经很长时间没有看过你的工具包了,但是如果它的分析器不能排除包或限制已分析的包,我会感到惊讶。JVM实际上附带了一个不太糟糕的分析器。包含在jdk中。请注意,上的第二个屏幕截图在底部有一个部分,用于仅配置文件类,因此如果您仅将包放在其中,则不会配置任何其他内容,或者您可以深入到仅配置文件特定的包或类。

有一个调用图,可以在类和包聚合级别上操作

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

免责声明:我的公司开发JProfiler