x * x против математики.pow (x,2) производительность java



Я провел некоторое тестирование о том, является ли x * x или математикой.pow (x,2) быстрее в Java. Я ожидал, что простой x * x будет несколько быстрее, однако оказалось, что он примерно такой же быстрый. Может кто-нибудь просветить меня, как это возможно, пожалуйста?

587   3  

3 ответов:

Для всего, что вы знаете, это JITted (или даже уже во время компиляции) до той же самой точной вещи. Такого рода микро-бенчмарки редко дают очень полезные результаты, поскольку нет реального контекста.

Это определенно не причина, чтобы предпочесть одно другому, поскольку реальный код редко имеет простую операцию x^2 в качестве точки доступа производительности.

Как это возможно, пожалуйста

Потому что Math.pow является внутренним JVM, то есть JIT-компилятор инициализирует вызов. Кроме того, когда он видит, что экспонента является константой 2, он заменяет вызов точно x*x.

Доказательство из горячих источников

Внутренняя реализация Math.pow() делегируется нативной функции, поэтому она может быть разумной для хорошей производительности. В любом случае, чтобы иметь достоверные результаты тестирования, вы должны проверить время в цикле, чтобы иметь реалистичное время выполнения.

Comments

    Ничего не найдено.