C# 是C++/CLI比C快#

C# 是C++/CLI比C快#,c#,c++-cli,C#,C++ Cli,C++/CLI比C#快吗?哪种类型的操作更快?因为它们都在.NET framework上运行,所以我认为任何性能差异都是可以忽略的。几乎可以肯定,任何差异都取决于您使用的编译器的工作情况。鉴于它们都是.NET语言,它们被编译成相同的字节码,然后在同一台虚拟机上运行,我一般认为不会 C++/CLI实际上是为了提供.NET和C++之间的语言互操作。< P>在C++语言中,任何C++编写的托管代码都将与等价的C语言完全相同,假设编译器的准确性,因为它们最终都会作为中间语言指令。但是,C++/CLI可以

C++/CLI比C#快吗?哪种类型的操作更快?

因为它们都在.NET framework上运行,所以我认为任何性能差异都是可以忽略的。几乎可以肯定,任何差异都取决于您使用的编译器的工作情况。

鉴于它们都是.NET语言,它们被编译成相同的字节码,然后在同一台虚拟机上运行,我一般认为不会


C++/CLI实际上是为了提供.NET和C++之间的语言互操作。

< P>在C++语言中,任何C++编写的托管代码都将与等价的C语言完全相同,假设编译器的准确性,因为它们最终都会作为中间语言指令。但是,C++/CLI可以轻松地将非托管代码与托管部分混合在一起,如果进行了良好的优化,这可能会带来相当大的速度优势。

好吧,简单的答案是。为什么?C++/CLI中的引用类型编译为MSIL,与C#中的引用类型相同


不过,C++/CLI的优点(以及很长的答案)是,您可以轻松地调用本机代码,这(在许多情况下)会更快。也就是说,如果编写一个本地C++类,并期望在托管类中的某人调用时,它是本地地执行的,那么本机C++类必须编译而不需要CLR支持(进入如何执行)。然而,C++/CLI带走了C#中存在的许多非性能方式(例如装箱)的语法优势

另外,C++/CLI允许您与非托管代码进行更干净的互操作,实际上允许您混合使用托管/非托管代码,这是一个性能至关重要的环境,可能会带来好处

编辑:


参见本帖中的一些差异:

是的,因为除了很少的细节,你可以使用.NET,就像其他的库一样,同时你仍然拥有C++的力量。将C++类与.NET类、内联程序集混合,如果需要,创建驱动程序,等等。在c#中,您可以使用usafe代码,但不能访问direct2d api。例如,它是有限的

Direct2dTest::MyForm^ form = gcnew Direct2dTest::MyForm();

//use (HWND)form.Handle.ToPointer() to acces the hwnd;

form->Show();
//you can use 
//System::Windows::Forms::Application::Run(form); 
//or a classic win32 loop
while (GetMessage(&msg, NULL, 0, 0)) {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

C++/CLI本身就是一种成熟的语言。即使在a/clr:纯编译环境中,它也比C#有一些优势。很难想象它只用于互操作操作。谢谢,用一种不同的方式来看待问题,但我认为这是一种性能优势,因为它可以帮助您编写性能良好的代码,C++/CLI通过
Dispose
调用为模拟堆栈分配和RAII引入了自己的语法糖。我不明白为什么C++/CLI会比在C#上使用互操作编写完全相同的代码更快。当然,在开发时,手头有本机函数而不必声明dllimport之类的东西会很方便,但是从定义dllimport的那一刻起,为什么c++/cli代码会更快呢?@Ownedelysium:1。并不是所有的东西都可以简单地归结为一两个函数。有时您需要对象(状态)。2.编组具有与之相关的成本。