C#与C ++性能比较

C# vs C++ performance comparison

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How much faster is C++ than C#?

你好!

在实际应用中,有没有比C ++更快(性能更好)的情况?

我听说通用集合比STL有一个显著的性能优势——是这样吗?

用C语言编写的本机代码(不安全块、PIN指针、元帅……)与在C++中本地编写的相同代码的性能相同吗?


Are there any cases in which C# is faster (has better performance) than C++ in practical use?

Has native code written in C# (unsafe block, pin pointers, Marshal...) the same performance as the same code written natively in C++?

是的,有时会发生这种情况。请参阅以下答案:

为什么我会看到使用本机代码的速度提高了约20%?

I heard that generic collections are a significant performance advantage over stl - is that true?

不一定。STL可以非常有效-通常比.NET中的泛型集合更有效。

但是,一般来说,我不会把重点放在这个级别的性能上。如果你正确地开发C和C++,它们都是"足够快"。您可以用任何一种语言生成非常、非常有性能的代码——同样简单,您也可以用任何一种语言生成性能糟糕的代码。


I heard that generic collections are a significant performance advantage over stl - is that true?

我非常怀疑,STL使用模板,这样可以避免JIT开销,仍然可以创建真正的、编译的、静态类型的集合。

Has native code written in C# (unsafe block, pin pointers, Marshal...) the same performance as the same code written natively in C++?

尽管C不安全代码的性能非常好,但它并不能很好地与运行时的其余部分联系在一起…例如,尝试使用不安全的缓冲区来编写套接字代码,但最终却在任何地方使用了固定块,这会变成一场噩梦。不仅如此,C++代码的性能也会更好。

Are there any cases in which C# is faster (has better performance) than C++ in practical use?

动态代码是最重要的一个,System.Reflection.Emit和LINQ表达式(特别是C 4中的新特性)确实使C语言中的代码生成实用化,而C++中类似的策略可能需要付出更多的努力(因此不实用)。


对于一个分配/释放许多小尺寸对象,但大小不同的应用程序,我使用C语言代替了C++进行了一些性能改进。我怀疑垃圾收集是此类工作的一个好工具。

但是,至少使用C 2/.NET,C++会产生更快的代码组数(对于CS* 2没有SSE支持)。


据我所知,您不能用C语言编写本机代码。即使管理了不安全的代码,它也可以访问更多的系统资源,从而可以更负责任地在之后进行清理。