Función math.sin un poco lenta.

Estoy haciendo un programa de tratamiento de imágenes en el cual utilizo la función Math. Sin (librería matemática de JAVA). El programa me iba demasiado lento y gaste el "perfilador" de JAVA (o algo parecido, que nos dice la linea de código donde se gasta más CPU) y mi sorpresa fue que era en la linea de Math. Sin. No se porque tarda tanto tiempo en ejecutar dicha instrucción, se supone que con los microprocesadores actuales tarda lo mismo en ejecutar una operación de enteros que una en punto flotante, puede ser que JAVA no haga uso del coprocesador matemático y que por eso vaya tan lento. También puede ser que la librería matemática no este optimizada, la verdad es que no se que puede ser. ¿Dónde puedo conseguir una librería matemática optimizada? ¿A alguien más le ha pasado este problema?

1 Respuesta

Respuesta
1
Lo siento pero no conozco ninguna librería especializada en matemáticas para java, aparte de la que viene, prueba buscando en google seguro te que encuentras algo.
Verdaderamente más de una persona le ha tenido que pasar los mismo que a ti, pero la solución he visto que han utilizado es la que te he comentado.
Si miras en un libro de trigonometría podrás ver que hay una fórmula que te permite sacar el seno de un angulo como función de otros dos, tal vez esto junto con la tabla pueda ser una solución a tu problema
Tampoco es mala solución implementar mi función seno propia, bueno le echare un vistazo en internet. Gracias por todo y espero que nos veamos más por aquí.
Gracias por contestar tan rapidamente;
Es una solución pero me gustaría intentar otro tipo de solución (ya sea librería matemática optimizada o otro tipo) antes de llegar a esta solución.
El problema es que el valor del seno puede ir desde 0 hasta 2PI y si lo divido en sectores para poder meterlo dentro de la tabla pierdo precisión en las operaciones.
¿Sabes dónde puedo conseguir librerías para java, haber si encuentro alguna que se matemática y que sea más rápida?
No es posible que la solución que me hayas dado sea la única, porque a más gente le tiene que haber pasado este mismo problema.
Gracias por tu esfuerzo desinteresado.
La función seno siempre ha dado problemas de velocidad, tanto en java como en lenguajes clásicos como c. Un truqillo que suele surgir bastante buen efecto es que prepares un tabla con el resultado de los senos que sueles utilizar y al iniciar la aplicación la inicializes, de manera que durante el procesamiento de las imágenes solo tiene que consultar esta tabla obtener el seno, no se si este enfoque será válido para tu aplicación, pero ha sido una solución muy utilizada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas