我正在尝试比较pow(x,2.0)和的性能,pow(x,2.0000001)尽管那2.0会快得多,但它们的速度相同。我什至通过运行带有-Xint参数的jar来删除JIT优化。
pow(x,2.0)
pow(x,2.0000001)
2.0
-Xint
知道为什么吗?非常感谢!
尽管投票不公平,但这个问题还是有道理的,因为它揭示了真正的JVM错误。
当您运行Oracle JDK时Math.pow(x, 2.0),JVM版本之间的性能差异很大。
Math.pow(x, 2.0)
Math.pow
PSMath.pow用不同版本的JDK在我的计算机上100M调用的大概时间(以秒为单位)。
Math.pow(x, 2.0) Math.pow(x, 2.0000001) JDK 7u25 3.0 30.4 JDK 7u40 11.1 11.1 JDK 8u40 0.1 11.1