由托管代码(c#)操作的非托管代码(CPP)是否具有与由另一个非托管代码操作的相同性能(堆栈是否操作相同等)?
。-如果我从myc中调用MyCppApp中的代码,它是否具有与从MyCpp2App调用相同的性能?
我知道互操作操作的代价,但把这些放在一边,我的问题是关于CPP代码执行本身的性能。
谢谢,S
一旦控件在非托管代码中,由托管代码调用的事实对CPU的操作没有任何影响。无论调用者是谁,CPU都执行相同的指令。事实上,CPU没有"调用者"的概念。
因此,无论谁调用代码段,性能都是相同的。(假设呼叫成本为零)
可以,但请记住,调用非托管应用程序可能需要更长的时间,因为需要将数据从托管缓冲区复制到非托管缓冲区。
这是。net和COM互操作的问题之一——问题在于为了离开托管环境而必须执行的指令数量(约50条)——这使得整个过程有些缓慢。
还需要注意,在最终阶段,托管代码将通过JIT编译转换为适当的机器码。