性能 - 链接 C 尖锐和C++如何影响性能
Performance - How does linking C-sharp and C++ effect on Performance?
我正要开始我的新项目。我一直在使用C++(与Qt(和C#一起工作。所以我对这两种语言都非常熟悉。
我一直将它们分开使用,C#用于Windows,C++用于跨平台应用程序。但这次我想做一些不同的事情。我想将它们链接起来并一起使用。
我将使用 C# 进行 GUI 开发和后端C++。
所以现在,我只想知道这将如何影响我的应用程序的性能?
此致敬意萨玛斯·萨克塞纳。
互操作层的性能足够好,不会改变整体性能——这取决于你写代码的程度,你是否执行无用的复制,在你应该使用 StringBuilder 时在循环中连接字符串,等等。
尽管如此,p/invoke 和 COM 互操作的成本仍不为零,因此您希望避免使用聊天接口(例如,互操作调用应用整个数组填充缓冲区,而不是强制您为每个项目进行 p/invoke 调用(。
最终的互操作方法,C++/CLI"It Just Works",与纯 C# 相比,实际上可能会产生负成本。 这是因为它是 .NET 运行时在内部使用的方法(只要 mscorlib.exe
中的元数据具有 internalcall
标志(,如果向项目添加 C++/CLI 代码在 .NET 本身中节省的托管/本机转换比添加的更多,它将节省时间。
如果你使用Microsoft的"Dot Net"口味的C++,你会没事的。 性能通常与用 C# 编写所有内容或用 C++ 编写所有内容时一样好。 这是因为两种语言都将在"托管"模式下运行,并且它们将共享相同的运行时。 (点网运行时。
但是,如果要将托管 C# 与旧的常规(非托管/本机(C++一起使用,则由于在两者之间发出调用时需要完成的所有托管到本机和本机到托管的转换,以及这意味着的所有数据封送,您将有一定的性能损失。
谷歌搜索"pinvoke",看看人们为了从C#调用C++而必须经历的痛苦。 尽管如此,"pinvoke"的存在还是很酷的,它使事情变得相对容易。
- "virtual"对C++析构函数有何影响?
- 如果我对"while"块发表评论,为什么程序会死机?其中的"yield"线有何影响?
- 内存分配对多线程性能的影响
- 特征:编码风格对性能的影响
- 在异常处理中,对性能的影响会随着 try 部分中的代码量而增长
- C++类中的许多成员函数对性能的影响
- 具有 *派生* 类中的函数的虚拟关键字对性能的影响
- 使用 std::find 对性能的影响
- 抽象函数参数格式及其对性能的影响
- gcc链接到未使用的库对构建系统性能的影响
- Qt也不例外.这对C++代码有何影响
- 在 c++ 中使用 "this" 关键字对性能有影响吗?
- Dalvik 对原生 C++ 代码性能的影响?
- c++中继承(is-a)与聚合(has-a)对性能的影响
- OpenMP线程多于工作对性能的影响是什么?
- 捕获Lambda函数性能的影响
- 基例如何影响使用递归函数的哪些行
- 这样的继承对性能的影响是什么?
- OpenMP对性能的影响:私有指令vs.在构造中声明变量
- "if"语句对性能的影响有多大?