Я провел некоторое тестирование относительно того, быстрее ли x * x или Math.pow(x, 2) в Java. Я ожидал, что просто x * x будет несколько быстрее, однако оказалось, что он примерно равен скорости. Может кто-нибудь просветить меня, как это возможно, пожалуйста?
X * x vs Math.pow(x, 2) java performance
Ответ 1
Все, что вы знаете, это JIT (или даже уже во время компиляции) до той же самой вещи. Эти микро-контрольные показатели редко дают очень полезные результаты, поскольку нет реального контекста.
Это определенно не является основанием для предпочтения одного над другим, поскольку код реального мира редко имеет простую операцию x^2
как точку доступа производительности.
Ответ 2
как это возможно, пожалуйста
Поскольку Math.pow
является встроенным JVM, то есть JIT-компилятор строит вызов. Кроме того, когда он видит, что показатель является константой 2
, он заменяет вызов ровно x*x
.
Ответ 3
Внутренняя реализация Math.pow()
делегируется на нативной функции, поэтому она может быть разумной для хорошей производительности.
В любом случае, чтобы иметь достоверные результаты теста, вы должны проверить время в цикле, чтобы реалистично выполнить время выполнения.