java.lang.Math.log zastąpiony wewnętrznym wywołaniem, dlaczego nie java.lang.Math.exp ()?
Ponawiam pytanie, na które uważam zbyt mało uwagi:
Dlaczego ten prosty kod (po prostu wezwanie doMath.log()
):
Double thisdouble = Math.log(10);
Z punktem przerwania w linii 275 Math.class jdk1.7.0_11:
274 public static double log(double a) {
275 return StrictMath.log(a); // default impl. delegates to StrictMath
276 }
Nie zatrzymujesz wykonywania w trybie debugowania? Czy ktoś może spróbować tego na swojej własnej maszynie (używam Eclipse)?
PowołanieMath.exp()
i debugowanieMath.exp
(linia 254) funkcja działa ...
EDYTOWAĆ: Odpowiedź na powyższe jest takaMath.log
jest zastąpiony wewnętrznym wywołaniem przez maszynę wirtualną Hotspot, więc kod w klasie Math nigdy nie zostanie osiągnięty. Pozostaje pytanie, dlaczegoMath.exp
nie jest zastępowany przez intrinsic ... FWIW Jestem na Core i5 M520 (Arrandale), ale poważnie wątpiłbym, że ten procesor obsługuje log, a nie exp ...