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