|
|
1
5
来自MSDN http://msdn.microsoft.com/en-us/library/aa712982.aspx ): “每次调用pinvoke的开销在10到30个x86指令之间。除此固定成本外,编组还会产生额外的开销。在托管代码和非托管代码中具有相同表示形式的可延迟类型之间没有封送处理成本。例如,在int和int32之间转换没有成本。” 所以,它是相当便宜的,但像往常一样,你应该仔细测量,以确保你受益于它,并记住任何维护开销。除此之外,我建议在任何复杂的互操作上,通过P/Unjk推荐C++/CLI(“托管”C++),特别是如果您对C++感到满意的话。 |
|
|
2
1
我似乎记得听说每个P/Invoke调用至少有30个机器操作开销。但是忽略这个理论,分析你的选择,选择最快的。 |
|
|
3
1
我会亲自用C语言和非托管C++编写一个简单的测试工具,然后对应用程序进行配置,看看你正在使用什么样的性能增量。 另一个需要考虑的问题是,您将在应用程序中引入一个维护问题,特别是如果您有希望维护代码的初级开发人员。确保您知道自己获得了什么,以及在性能、代码清晰性和可维护性方面分别损失了什么。 另一方面,JIT C代码应该具有与C++有关算术运算的性能。 |
|
|
4
0
您可以通过使用
根据我的经验,正确格式化的C(例如,将分配保持在循环之外)将非常好地执行。 |
|
|
5
0
此链接提供了一些见解: http://www.codeproject.com/Articles/253444/PInvoke-Performance 还要注意应用[SuppressUnmanagedCodeSecurity]属性时的性能差异。 |
|
Feem · C中COM对象的实际地址# 2 年前 |
|
|
Zee · 如何从Windows SDK打开文件? 13 年前 |
|
|
Yippie-Ki-Yay · 使用非托管代码中的托管COM对象 13 年前 |
|
|
Gilad · 关于C#与非托管C的互操作性的续篇++ 13 年前 |