使用hprof分析循环的scala

dsg*_*dsg 6 optimization scala hprof

街上的字是scala中的循环比while循环慢.

慢:

for (i <- 0 until 10000) {
  f(i)
}
Run Code Online (Sandbox Code Playgroud)

快速:

var i = 0
while (i < 10000) {
   f(i)
   i += 1
} 
Run Code Online (Sandbox Code Playgroud)

如何使用hprof来判断for循环是否是我代码中的瓶颈?我正在使用的代码进行分析-agentlib:hprof=cpu=samples,该方法在"CPU SAMPLES"部分中会是什么?

我想知道在哪里集中我的优化工作.for循环是瓶颈吗?

huy*_*hjl 3

我认为您可能会更幸运地使用专门用于分析的工具,例如yourkitVisualVM

他们通常有接口来捕获 CPU 样本,然后深入查看哪些调用消耗了最多的 CPU 周期。

任何类型的瓶颈都会出现(比如占用 95% 的 CPU 时间),然后您可以深入研究,直到看到您的(或库)的哪些方法位于这些热点的调用堆栈上。然后你可以看看是否涉及for循环。