gpt4 book ai didi

c# - 与正常的 p/Invoke 调用相比,使用不安全的 P/Invoke 调用是否有性能优势?

转载 作者:太空狗 更新时间:2023-10-30 01:26:02 29 4
gpt4 key购买 nike

我希望使用 P/Invoke 来允许我的 C# 程序集与 native C 库互操作;这需要是跨平台的(即 Mono),因此不能使用混合模式程序集。我想知道使用不安全的 P/invoke 调用并在不安全的方法中处理所有指向指针的转换与进行典型的“安全”P/Invoke 调用相比是否有任何性能优势。提前致谢!

澄清:正如所讨论的那样,我不打算使用托管 C++ 包装器 here .我只想知道以下各项之间是否存在性能差异:

extern static void native_call_here(IntPtr parameter1, String parameter2)

extern static void native_call_here(int* parameter1, char* parameter2)

最佳答案

在某个时候会进行编码(marshal)处理。在前一种情况下,编码在您调用 PInvoke 方法时立即发生。在后一种情况下,由于您是从不安全代码调用的,因此您可以控制编码(marshal)处理何时/如何发生。如果您在不安全代码中对非托管内存执行多项操作,这可能会带来好处,但如果它只是传递数据,那么您所做的一切都会转移到 Marshaling 发生的地方。如果有的话,我希望 PInvoke 在这种情况下更快,但是,一如既往,如果重要的话,对其进行分析。

关于c# - 与正常的 p/Invoke 调用相比,使用不安全的 P/Invoke 调用是否有性能优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5783047/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com