2016-07-27 49 views
1

我目前正在做一些Java优化。看来评估我的进展的最好方法是使用System.nanoTime重复运行并收集运行时统计信息。Java优化范式

我的背景大部分都是嵌入式DSP应用。在我的嵌入式开发中,我可以访问CPU周期计数器(这是优化的很好措施)。 JRE的行为就像一个合成的CPU,有没有办法获得执行的指令数量或JRE时钟等值的信息?

在此先感谢您的任何提示。 J.R.

+2

请参阅http://stackoverflow.com/q/504103/3788176 –

回答

2

字节码计数对于你想要的几乎肯定是无用的。它们在运行时的性能方面完全是虚拟/名义上的。唯一重要的事情就是已经热身的代码已经过去了。

我建议你看看JMH为你的代码进行微观基准测试。 http://openjdk.java.net/projects/code-tools/jmh/

如果您来自DSP /实时背景,我建议您查看延迟分布并尽量减少分配率。

注:JVM在指令之间注入“安全点”以检查线程是否需要停止执行垃圾收集。垃圾收集可能需要几秒钟。然而,安全点通常会进行优化以避免放慢程序运行速度。

总之,这意味着时间之间的指令可能是什么,它可能是,它可能是秒钟甚至几分钟,所以我不会打扰他们的计数。