x * x vs Math.pow(x,2)java性能

我已经做了一些关于x * x或Math.pow(x,2)在Java中是否更快的测试。 我期待简单的x * x有点快,但事实certificate它的速度相当快。 有人可以开导我,请问这有可能吗?

对于所有你知道它是JITted(甚至已经在编译时)同样的事情。 由于没有真正的背景,这些微基准很少给出非常有用的结果。

由于现实世界的代码很少有简单的x^2操作作为性能热点,因此绝对不是优先选择其中一个的理由。

请问,这怎么可能?

因为Math.pow是JVM内在的,即JIT编译器内联调用。 此外,当它看到指数是常数2 ,它用x*x替换该调用。

来自HotSpot来源的certificate

Math.pow()的内部实现被委托给本机函数,因此可以合理地获得良好的性能。 在任何情况下,为了获得有效的测试结果,您必须在循环中测试时间以使执行时间切合实际。