Quali sono i metodi di matematica sono implementate in hardware FPU con .net?

StackOverflow https://stackoverflow.com/questions/1913301

  •  19-09-2019
  •  | 
  •  

Domanda

Qualcuno sa quali sono i metodi di matematica sono implemnted dall'hardware del processore per NET? Ad esempio, ho un algoritmo che fa un sacco di uso di atan. Posso facilmente scrivere una tabella di ricerca per questo, ma se math.net implementa questo utilizzando una FPU o di altre estensioni hardware, non sarà valsa la pena.

È stato utile?

Soluzione

o meno i metodi sono implementati utilizzando le istruzioni hardware x87 non è il problema, perché le istruzioni funzione trascendentale hardware sono lenti.

Il "Intel 64 e IA-32 Architetture Ottimizzazione Manuale di riferimento" (download qui ) elenca fpatan come avente una latenza di 150-300 cicli su hardware recenti. Un'implementazione software ben scritto può fornire un risultato in doppia precisione piena accuratezza nella sostanzialmente meno tempo -. Anzi, librerie matematiche di alta qualità fanno proprio questo

Altri suggerimenti

Perché non solo punto di riferimento il vostro approccio look-up table contro l'atan () fornito con .net. Allora sarete in grado di dire chiaramente quanto di una differenza di velocità utilizzando una tabella di look-up fa davvero.

Armati di che, non sarà necessario sapere come il VM sottostante fa le cose al fine di individuare il metodo più veloce. Sarete anche in grado di quantificare l'aumento di velocità.

Secondo questo blog, compilatore JIT di Microsoft non approfittare delle istruzioni FPU sulla piattaforma x86:

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

E 'una cosa abbastanza elementari da fare, dal momento che sono stati FPU standard su CPU x86 per oltre un decennio.

Con una piccola applicazione di riferimento, risulta che, anche se viene utilizzato il fpu, le prestazioni di Math.atan2 non è così buona come funzione approximisation alternativa.

Nel mio semplice punto di riferimento, il ciclo Math.atan2 sta prendendo 8 secondi, mentre la versione approssimativa sta prendendo 5,5 secondi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top