Welche mathematischen Methoden werden in FPU -Hardware mit .NET implementiert?

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

  •  19-09-2019
  •  | 
  •  

Frage

Weiß jemand, welche mathematischen Methoden von der Hardware des Prozessors für .NET impliziert werden? Zum Beispiel habe ich einen Algorithmus, der Atan viel nutzt. Ich kann dafür problemlos eine Nachschlagetabelle schreiben, aber wenn Math.net dies mithilfe einer FPU oder anderen Hardware -Erweiterungen implementiert, wird es sich nicht lohnen.

War es hilfreich?

Lösung

Ob die Methoden mithilfe der X87 -Hardware -Anweisungen implementiert werden oder nicht, ist nicht das Problem, da die Anweisungen zur transzendentalen Funktion der Hardware -Funktionen langsam sind.

Das "Intel 64- und IA-32 Architekturen-Optimierungsreferenzhandbuch" (Download " hier) Listen fpatan mit einer Latenz von 150-300 Zyklen für jüngste Hardware. Eine gut geschriebene Software-Implementierung kann eine vollständige Genauigkeit von doppelter Präzision liefern, was zu einer erheblichen Zeit führt-in der Tat tun hochwertige mathematische Bibliotheken genau das.

Andere Tipps

Warum nicht einfach Ihren Nachschlagtischansatz gegen den mit .NET bereitgestellten Atan () bewerten. Dann können Sie klar erkennen, wie viel Geschwindigkeitsunterschied mit einem Nachschlagtisch wirklich macht.

Mit dem bewaffnet werden Sie nicht wissen, wie die zugrunde liegende VM Dinge tut, um die schnellste Methode zu identifizieren. Sie können sogar die Beschleunigung quantifizieren.

Laut diesem Blog hat der JIT -Compiler von Microsoft tut Nutzen Sie die FPU -Anweisungen auf der X86 -Plattform:

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

Es ist eine ziemlich elementare Sache, da die FPUs seit über einem Jahrzehnt auf X86 -CPUs Standard sind.

Bei einer kleinen Benchmark -Anwendung scheint es, dass auch wenn die FPU verwendet wird, die Leistung von Math.atan2 nicht so gut ist wie eine alternative Anwendungsfunktion.

In meinem einfachen Benchmark dauert die Mathematik -Schleife 8 Sekunden, während die ungefähre Version 5,5 Sekunden dauert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top