Ist es in der Regel eine spürbare Leistungseinbußen beim Aufruf PInvoke Win32 / COM-Methoden?
Frage ich mich, ob jemand eine anständige Erklärung oder übersicht auf die negativen Aspekte der Verwendung von DLLImport /PInvoke auf Win32-Methoden aus verwaltet .Net-code?
Ich plan zu machen verwenden der verschiedenen Win32-Methoden und möchte ein besseres Verständnis über die negativen Auswirkungen, dies zu tun.
Dank,
Brian.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laut MSDN - Aufruf von Native Funktionen, die aus Verwaltetem Code
In meiner Erfahrung, es ist definitiv ein Aufwand, wenn P/Aufruf nativer Funktionen, aber in der Regel die Leistung beeinträchtigt, ist es nicht Wert sich Gedanken über. Die marshaling-Kosten etwas im Auge zu behalten. Wenn Sie auf der Durchreise sind, in großen Strukturen, strings, usw. dann ist die Leistung Kosten wird sich schnell zeigen.
Für P/Aufgerufene Funktionen, die aufgerufen werden, sind sehr Häufig, möchten Sie vielleicht zu prüfen, indem
[SuppressUnmanagedCodeSecurity]
zu Ihrem P/Invoke-Funktion-Definitionen (siehe MSDN - SuppressUnmanagedCodeSecurityAttribute). Dadurch wird die Laufzeit dabei ein Stapel laufen, um sicherzustellen, der Anrufer hat die UnmanagedCode-Berechtigung. Natürlich, stellen Sie sicher, Sie verstehen die Sicherheits-Konsequenzen, bevor durch hinzufügen dieses Attributs.Hier sind einige Probleme, die ich sehe, mit PInvoke:
Wenn Sie planen, große Mengen von nicht verwalteten Funktionen ich würde eine gemischte DLL - (http://msdn.microsoft.com/en-us/library/x0w2664k.aspx) anstatt der Deklaration einer Reihe von PInvokes.