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