SSE und C#
-
ist es möglich SSE Code in C# zu benutzen - muss ich meinen SSE Code in eine C++ Dll verpacken die ich dann aus C# heraus ausrufe oder gibt es eine möglichkeit SSE Befehle in C# direkt zu nutzen
Hab zwei große Arrays, die ich miteinander vergleichen muss - wenn ich da parallel immer gleich zwei, vier Werte vergleichen kann geht es natürlich schneller
-
Was meinst du mit SSE code? Die direkten Assemblerbefehle? Geht jedenfalls nicht, müsstest schon ne .Net Dll haben um die direkt nutzen zu können. Beim Umweg über C++ weiß ich net ob du deine Funktionen direkt in managed C++ implementieren kannst, falls nicht und du musst es unmanaged machen und dann mit InterOp rumhantieren, geht dir wahrscheinlich der Geschwindigkeitsvorteil flöten.
-
Bei managed C++ kannst du deine Assembler-Funktion in der selben Quelltextdatei implementieren, die Funktion ist dann aber unmanaged. In deinem Fall kannst du die Arrays im GC pinnen, damit du direkt aus unmanaged Funktionen zugreifen kannst. Bei grossen Datenmengen ist es sehr wahrscheinlich, dass du den Function-Call und das pinnen des Speichers (damit der GC ihn nicht verschiebt) wieder rausholst und einen dir einen Geschwindigkeitsvorteil verschaffen kannst. Die einzige Bedingung ist, ...dass man mit C++ arbeitet...