Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用DLIMPORT,C包装器会比原来的C++库慢吗?_C#_C++ - Fatal编程技术网

C# 使用DLIMPORT,C包装器会比原来的C++库慢吗?

C# 使用DLIMPORT,C包装器会比原来的C++库慢吗?,c#,c++,C#,C++,我想在这里创建一个实时人脸分析sdk的包装器。我想知道,当我使用dllImport创建它的包装器时,它会影响库的速度吗?可能不会太大,但这取决于库与托管代码的交互程度 非托管代码的性能不应受到CLR的影响。但是,CLR与非托管代码之间的调用CLR与非托管代码之间的P/Invoke调用和CLR与非托管代码之间的反向P/Invoke调用确实有一些开销,特别是在参数封送和返回值封送方面。在这两者之间传递巨大的结构、数组或字符串通常需要BLITNG或更复杂的封送处理,并且两者都需要时间来处理 因此,如果

我想在这里创建一个实时人脸分析sdk的包装器。我想知道,当我使用dllImport创建它的包装器时,它会影响库的速度吗?

可能不会太大,但这取决于库与托管代码的交互程度

非托管代码的性能不应受到CLR的影响。但是,CLR与非托管代码之间的调用CLR与非托管代码之间的P/Invoke调用和CLR与非托管代码之间的反向P/Invoke调用确实有一些开销,特别是在参数封送和返回值封送方面。在这两者之间传递巨大的结构、数组或字符串通常需要BLITNG或更复杂的封送处理,并且两者都需要时间来处理


因此,如果库花费大量时间在非托管环境中搅动,而不与任何CLR代码交互,则性能不应受到影响。如果您必须在短时间内进行大量的进出调用,您可能会注意到,与在本机二进制文件中进行相同的库调用相比,性能有所下降。

我可以想出一种方法来找到答案!非常感谢你。在这个库中,只有从C++到CLR的大东西才是毫秒后的实时图像。看完你的答案后,我想我可以轻松地接受它。