Tengo un dll win32 y dos aplicaciones que usan el mismo dll. Uno se escribe usando c en el espacio no administrado y el otro es la aplicación .net que realiza llamadas al código no administrado mediante Pinvokes.Rendimiento de invocar código no administrado desde el código administrado
A veces el rendimiento de la aplicación .net es mejor que la aplicación c. Técnicamente hablando, la invocación de código no administrado desde .net genera una sobrecarga de rendimiento, pero no en este caso.
Comprobé la referencia msdn y parece que hay algún tipo de preprocesamiento que ocurre antes de que se realice la llamada real. Durante el enlace, se carga el dll.
Quiero entender en qué escenarios la aplicación .net supera?
¿cómo se mide el rendimiento de las dos aplicaciones, y todas las otras lógicas son exactamente las mismas para las dos? –
Generalmente, las llamadas nativas deben ser más rápidas, mira esto: http://www.codeproject.com/KB/dotnet/pinvokeperformance.aspx ¿Estás seguro de que tus medidas son correctas? –
@AvadaKedavra - Medí una llamada a un método particular usando el cronómetro y el tiempo para la aplicación .net y c, respectivamente. – sundar