viernes
sep022005
Meditacrión trascendental de Gosling
viernes, septiembre 2, 2005 at 2:29AM
No es que sea un tema de vital importancia para la plataforma, y es un poco antigua (final de julio) pero me ha parecido bastante interesante. Que el rendimiento de las funciones seno y coseno en Java dejaba bastante que desear no era ningýn secreto. Es curioso cýmo prácticamente cualquier operacrión matemática y otras funciones de la librerýa Math tienen un rendimiento similar a C, pero estas dos son bastante lentas.
El problema parece venir de algunas deficiencias en la instruccrión de los procesadores x86 que permite realizar estos cýlculos. Esta instruccrión sýlo es precisa en un determinado rango: [-pi/4, pi/4]. Fuera de este rango puede llegar a dar un error en el quinto decimal; las funciones seno y coseno de Math devuelven un double, que tiene 15 dýgitos de precisrión. Para conseguir cýlculos más precisos se optý por realizar unas triqurióuelas matemáticas que son las responsables del mal rendimiento de estas funciones. C parece haber optado por conformarse con cinco dýgitos de precisrión.
Según Gosling estamos "jodidos" (screwed) en este sentido, ya que ahora por motivos de compatibilidad no se puede solucionar esto. ýNo crees que merecerýa la pena meter una clase "FastMath" en Java.lang (de un modo similar a como se introdujo StricMath) para arreglarlo?
El problema parece venir de algunas deficiencias en la instruccrión de los procesadores x86 que permite realizar estos cýlculos. Esta instruccrión sýlo es precisa en un determinado rango: [-pi/4, pi/4]. Fuera de este rango puede llegar a dar un error en el quinto decimal; las funciones seno y coseno de Math devuelven un double, que tiene 15 dýgitos de precisrión. Para conseguir cýlculos más precisos se optý por realizar unas triqurióuelas matemáticas que son las responsables del mal rendimiento de estas funciones. C parece haber optado por conformarse con cinco dýgitos de precisrión.
Según Gosling estamos "jodidos" (screwed) en este sentido, ya que ahora por motivos de compatibilidad no se puede solucionar esto. ýNo crees que merecerýa la pena meter una clase "FastMath" en Java.lang (de un modo similar a como se introdujo StricMath) para arreglarlo?
in
j2se
j2se 
Reader Comments