使用C#或C#内的本机C++性能

TCS*_*TCS 2 .net c# c++ native-code

我想知道以下两个场景是否对本机C++代码具有相同的性能影响(如果有任何性能影响).

假设我有cpp_calc()一些正在做一些计算的函数,并用原生C++编写.还有,cs_show_gui_stuff()用C#编写.

现在,以下哪种情况会恶化本机c ++性能(如果有任何性能损失)?

  1. 创建一个.Net(C#)应用程序,它使用或将C++转换为COM DLL,在本机C++ dll 中运行cs_show_gui_stuff()和调用.cpp_calc()DllImport

  2. 创建一个在C++中实现的C++应用程序,cpp_calc()cs_show_guid_stuff()通过将C#代码放在.Net COM DLL中来运行.

谢谢 :-)

Flo*_*her 9

它实际上取决于系统的其他部分主要是写入的内容.从性能角度来看,如果方法参数不需要任何特殊的编组,则一个PInvoke(via DllImport属性)调用可能比一个COM调用更快.

第三种也许是最好的选择是创建一个托管C++/CLI库,该库调用非托管C++方法,几乎​​不影响性能,并在C#应用程序中添加对C++/CLI库的引用.然后,C#应用程序可以对C++/CLI应用程序进行托管方法调用,从而可以进行非托管方法调用.虽然这增加了一个间接级别,但它将提供比您提到的方法更好的性能.