gpt4 book ai didi

c# - 使用 C# 或在 C# 中的 native C++ 性能

转载 作者:太空狗 更新时间:2023-10-29 23:42:03 26 4
gpt4 key购买 nike

我想知道以下两种情况是否对 native C++ 代码具有相同的性能影响(如果有任何性能影响)。

假设我有函数 cpp_calc(),它正在执行一些计算工作并且是用 native C++ 编写的。此外,还有 cs_show_gui_stuff(),它是用 C# 编写的。

现在,以下哪些场景会降低原生 C++ 的性能(如果有任何性能损失的话)?

  1. 创建一个运行 cs_show_gui_stuff() 并在原生 C++ dll 中调用 cpp_calc() 的 .Net (C#) 应用程序使用 DllImport 或将 C++ 转换为 COM DLL。

  2. 创建一个在 C++ 中实现 cpp_calc() 并运行 cs_show_guid_stuff() 的 C++ 应用程序 .Net COM DLL。

谢谢:-)

最佳答案

这实际上取决于系统的其他部分主要是用什么编写的。从仅性能的角度来看,一个 PInvoke(通过 DllImport 属性)调用可能会如果方法参数不需要任何特殊的编码(marshal)处理,则比一个 COM 调用更快。

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

关于c# - 使用 C# 或在 C# 中的 native C++ 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6149331/

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