Mam win32 dll i dwie aplikacje, które używa tej samej biblioteki dll. Jedna jest zapisywana przy użyciu c w niezarządzanej przestrzeni, a druga to aplikacja .net, która wywołuje kod niezarządzany za pomocą Pinvokes.Wydajność wywoływania niezarządzanego kodu z kodu zarządzanego
Czasami wydajność aplikacji .net jest lepsza niż aplikacja c. Technicznie rzecz biorąc wywoływanie niezarządzanego kodu z .net powoduje zwiększenie wydajności, ale nie w tym przypadku.
Sprawdziłem referencję msdn i wydaje się, że istnieje jakiś rodzaj przetwarzania wstępnego, który ma miejsce przed wykonaniem faktycznego połączenia. Podczas łączenia plik DLL jest ładowany.
Chcę zrozumieć, w jakich scenariuszach. Aplikacja internetowa działa lepiej?
Jak mierzyć wydajność obu aplikacji i czy wszystkie inne logiki są dokładnie takie same dla obu? –
Ogólnie, połączenia natywne powinny być szybsze, spójrz na to: http://www.codeproject.com/KB/dotnet/pinvokeperformance.aspx Czy jesteś pewien, że pomiary są prawidłowe? –
@AvadaKedavra - Zmierzyłem konkretne wywołanie metody, używając stopera i czasu odpowiednio dla aplikacji .net i c. – sundar