Pregunta

¿Alguien sabe qué métodos son matemáticas implemnted por el hardware del procesador para .NET? Por ejemplo, tengo un algoritmo que hace que una gran cantidad de uso de atan. Puedo escribir fácilmente una tabla de búsqueda para esto, pero si math.net implementa esta usando un FPU u otras extensiones de hardware, que no va a valer la pena.

¿Fue útil?

Solución

Si o no los métodos se implementan utilizando las instrucciones de hardware x87 no es la cuestión, ya que el hardware instrucciones de funciones trascendentales son lentos.

El "Intel 64 e IA-32 Arquitecturas Optimización Manual de referencia" (descarga aquí ) enumera fpatan como tener una latencia de 150-300 ciclos en el hardware reciente. Una aplicación de software bien escrito puede entregar un resultado de doble precisión máxima precisión en mucho menos tiempo -. De hecho, las bibliotecas de matemáticas de alta calidad hacen precisamente eso

Otros consejos

¿Por qué no comparar su enfoque de tabla de consulta en contra de la atan () provisto de .NET. Entonces serás capaz de decir claramente cuánto de una diferencia de velocidad utilizando una tabla de consulta que realmente hace.

Armado con eso, usted no necesita saber cómo la máquina virtual subyacente hace cosas con el fin de identificar el método más rápido. Además, podrá ser capaz de cuantificar el aumento de velocidad.

De acuerdo con este blog, compilador JIT de Microsoft hace aprovechar las instrucciones FPU en la plataforma x86:

http://blogs.msdn.com/davidnotario /archive/2004/10/26/247792.aspx

Es una cosa bastante elemental de hacer, ya FPU han sido la norma en las CPU x86 hace más de una década.

Con una pequeña aplicación de referencia, parece que incluso si se utiliza la FPU, el rendimiento de Math.atan2 no es tan bueno como una función approximisation alternativa.

En mi sencilla de referencia, el bucle Math.atan2 se está llevando a 8 segundos, mientras que la versión aproximada está tomando 5,5 segundos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top