我目前正在做一些Java优化。评估我的进度的最好方法似乎是重复运行并使用System.nanoTime收集运行时统计数据。
我的大部分背景都与嵌入式DSP应用程序有关。在我的嵌入式开发中,我可以访问CPU周期计数器(这是一个很好的优化方法)。JRE就像一个合成CPU,有没有办法获得执行的指令数或JRE时钟等价物的信息?
提前感谢您的任何提示。J.R.
发布于 2016-07-27 19:08:48
几乎可以肯定,字节码计数对您想要的东西毫无用处。就运行时的性能而言,它们完全是虚拟的/虚构的。唯一重要的是已经预热的代码的运行时间。
我建议您看看JMH,以便对您的代码进行微基准测试。http://openjdk.java.net/projects/code-tools/jmh/
如果您来自DSP/实时背景,我建议您查看延迟分布并最小化您的分配率。
注意: JVM在指令之间插入“安全点”,以检查线程是否需要停止,例如执行垃圾收集。垃圾收集可能需要几秒钟的时间。然而,安全点通常会被优化,以避免降低程序的运行速度。
简而言之,这意味着指令之间的时间可能是零,可能是什么,可能是几秒钟,甚至几分钟,所以我不会费心去计算它们。
https://stackoverflow.com/questions/38604407
复制相似问题