Does anybody have specific information about why this would be the case?
Native-to-native is often a direct call (lets ignore COM proxy/stub and marshaling goo for now). Managed-to-native calls first goes through the CLR's security checks and marshaling layer. That takes time.
Any suggestions to speed up the connection between new .NET code and legacy C++?
The general recommendation is to use "chunky" rather than "chatty" calls. That is, do few calls and pass as much data as you can across at once, rather than calling many simple functions such as property getters and setters. So if your existing interface has a lot of these simple methods, consider wrapping it with a more .NET friendly interface that transfers all the data you need over to unmanaged code at once. Ideally, the marshaling overhead should be negligible compared to the amount of processing being performed in the unmanaged component.
Using IJW interop in a MC++ assembly might also speed things up compared to COM interop.
Finally, you might want to read about the SuppressUnmanagedCodeSecurity attribute.
Mattias
=== Mattias Sjögren [EMAIL PROTECTED]