.NET本机和RCW开销

.NET本机和RCW开销,.net,uwp,windows-runtime,.net-native,rcw,.net,Uwp,Windows Runtime,.net Native,Rcw,我很好奇.NET Native是如何工作的。在托管代码中使用WinRT类时,通常通过RCW调用它们,由于托管代码和非托管代码之间的互操作,会产生一些开销。我想知道,当使用.NET Native编译托管代码时,理论上是否存在相同的开销?.NET Native interop与WinRT具有与使用CoreCLR或full framework运行相同的结构。这是因为您不可避免地要承担一定的开销,以确保在跨越边界时正确跟踪各种对象的内存。无论在哪个.NET运行时,由于GC的原因,总会有一些不可还原的东西

我很好奇.NET Native是如何工作的。在托管代码中使用WinRT类时,通常通过RCW调用它们,由于托管代码和非托管代码之间的互操作,会产生一些开销。我想知道,当使用.NET Native编译托管代码时,理论上是否存在相同的开销?

.NET Native interop与WinRT具有与使用CoreCLR或full framework运行相同的结构。这是因为您不可避免地要承担一定的开销,以确保在跨越边界时正确跟踪各种对象的内存。无论在哪个.NET运行时,由于GC的原因,总会有一些不可还原的东西需要跟踪

也就是说,为基于.NET本机的应用程序生成的互操作代码将具有提前生成的好处。这意味着它可以通过同一个程序优化程序来优化,这是我们的C++编译器的一部分,这样你就可以得到微软所能提供的最好的汇编代码。 (披露:我在.NET本机运行时和编译器团队工作)