Я пытаюсь сравнить производительность pow(x,2.0)
и pow(x,2.0000001)
, и я, хотя то, что 2.0
будет намного быстрее, но они с одинаковой скоростью. Я даже удалил оптимизацию JIT, запустив jar с параметром -Xint
.Java Math.pow (x, 2.0) vs Math.pow (x, 2.0000001) performance
Любая идея, почему это так, пожалуйста? Спасибо большое!
Реализация может проводить условную ветвь для проверки на предмет специального случая или для реализации всех случаев с одним и тем же кодом. Все, что имеет значение, - результат. Во время исполнения гарантии нет. (Не то, если вы не будете осторожны, вы увидите их, даже если они там). –
Почему вы ожидаете повышения производительности? Тип обоих параметров - «double». –
Потому что это просто использование одной магической реализации, которая специализируется на всех двухместных; он не использует какую-либо специальную магию для целых степеней. Если вы просто используете умножение напрямую ('x * x'), вы получите лучшие результаты. –