java - 针对特定包的 Scala/Java 分析

标签 java scala profiling

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

理想情况下,我想要一个 MATLAB Profiler style heat-map对于我的所有源文件,颜色越强表明该行花费了更多时间。我意识到这个问题太多了,所以如果它不存在我也不会感到惊讶。

如果上述不可能,我希望能够执行 hprof cpu=samples 风格的分析,但不是吐出项目中执行的所有类的所有方法的列表,我想能够排除 namespace (例如: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 实际上附带了一个还不错的分析器。 visualvm包含在jdk中。请注意 profiling page 上的第二个屏幕截图底部有一个“仅分析类”部分,因此如果您只将包放在那里,您将不会分析任何其他内容,或者您​​可以更深入地仅分析特定的包或类。

关于java - 针对特定包的 Scala/Java 分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7924255/

相关文章:

java - 如何使用 sbt 将 java 库与 scala 一起使用?

google-app-engine - 分析 java Google App Engine 应用程序

debugging - 使用堆栈进行分析

ruby-on-rails - rack-mini-profiler 正在显示分析静态文件

java - hibernate 问题 : must appear in the GROUP BY clause or be used in an aggregate function

java - "return a type that is compatible"是什么意思?

python - 将在 python 中训练的 xgboost 模型加载到 scala

java - Java 是否支持和优化尾递归调用?

java - 解释一下这段代码是做什么的

Java EE 如何在启动时运行类