Frage

Ich arbeite an einer Math-Bibliothek für meinen DirectX-3D-Motor in C #.Ich benutze SlimDX, das ist ein wunderbarer und leistungsstarker Bibliothek.SlimDX bietet ein paar mathematische Klassen an, aber sie sind eigentlich Wrapper um native D3DX-Objekte, so dass die Objekte selbst sehr schnell sind, der Interop ist nicht, weil mein verwalteter C #-Code sie übertreibt.

Meine spezifische Frage hat mit dem Floating-Point-Vergleich zu tun.Die sortierte kanonische Möglichkeit besteht darin, einen Epsilon-Wert zu definieren und den Wert auf die Differenz zwischen den Fließkommawerten zu vergleichen, um die Nähe zu bestimmen, wie somit:

generasacodicetagpre.

Der Funktionsaufruf-Overhead würde den tatsächlichen Vergleich süßen, sodass diese triviale Funktion in C ++ einteilig ist, wird der C # -Compiler dies tun?Gibt es eine Möglichkeit, dem C # -Compiler zu sagen, dass ich eine Methode in Verbindung stehend?

War es hilfreich?

Lösung

Der C # -Compiler führt nicht eintrifft - aber das Jit kann dies in diesem Fall gut tun.Das ist sicherlich das Stück, das das Einführen von tun würde, wenn irgendetwas.

edit: Ich würde erwarten es in diesem Fall auf Inline, aber es ist schwer zu erkennen, ohne den Code in so etwas wie CORDBG mit JIT-Optimierungen eingeschaltet zu lassen.Jede andere CLR-Version hat möglicherweise unterschiedliche Tweaks an seinem Einlufung (einschließlich der 64-Bit-Vs 32-Bit-Clrs), daher zögere ich, etwas zu definitiv zu sagen.

Andere Tipps

Hier sind einige Informationen über die Umstände, unter denen das JIT nicht einleitend funktioniert;

http://blogs.msdn.com/b/davidnotario/archive/2004/11/01/250398.aspx

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