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

时间:2015-03-19 12:13:10

标签: java performance

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

3 个答案:

答案 0 :(得分:36)

  

怎么可能,请

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

Proof from HotSpot sources

答案 1 :(得分:1)

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

答案 2 :(得分:-2)

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

这绝对不是一个偏好另一个的理由,因为现实世界的代码很少有简单的x^2操作作为性能热点。