日期:2014-05-18  浏览次数:21245 次

C#调用DLL是否会大幅度影响程序性能?
我使用C#程序用DLLIMPORT调用DLL中的函数。
为了比对,我在C++中调用了同样的函数。
由于是一个视频捕捉的程序,发现c++下能达到15帧,较高画面质量。
但是C#中同样的画面质量,只能达到2-3帧。
这是第三方提供的DLL。
是c#本身得性能没有c++好,还是c#不兼容c++编写的dll呢?
如果我在c++中捕捉视频,然后写成类库把指针传递给c#程序,
能不能达到较好的性能呢?
我还是比较喜欢在dotnet平台中开发,
而且我使用的另一个第三方的类库只提供对c#程序语言的支持。
请高手们指点!

------解决方案--------------------
当然是c#导致了很大的性能下降了
不过这些东西应该可以通过算法修改得到部分改善
------解决方案--------------------
1) 避免大循环里进行函数的PInvoke调用,你可以把循环的逻辑放到C++函数里
2) 用C++/CLI封装一层,而不是直接PInvoke调用,可以明显提高性能