C#与C++性能比较

UGE*_*EEN 3 c# c++ performance

可能重复:
C++比C#快多少?

你好!

在实际应用中,C#是否比C++更快(具有更好的性能)?

我听说泛型集合比stl具有显着的性能优势 - 这是真的吗?

用C#编写的本机代码(不安全块,引脚指针,Marshal ......)与C++本地编写的相同代码具有相同的性能吗?

Ree*_*sey 6

在实际应用中,C#是否比C++更快(具有更好的性能)?

用C#编写的本机代码(不安全块,引脚指针,Marshal ......)与C++本地编写的相同代码具有相同的性能吗?

是的,有时候会发生这种情况.看到答案:

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

我听说泛型集合比stl具有显着的性能优势 - 这是真的吗?

不必要.STL可以非常高效 - 通常比.NET中的泛型集合更有效.

但是,总的来说,我不会专注于这个级别的表现.如果你正确地开发它们,C#和C++都"足够快".您可以使用任何一种语言制作非常高效的代码 - 同样轻松地,您可以制作在任何一种语言中都表现出色的代码.

  • 为"同样轻松的+1,你可以制作在任何一种语言中都表现糟糕的代码" (4认同)

Lor*_*nVS 5

我听说泛型集合比stl具有显着的性能优势 - 这是真的吗?

我非常怀疑它,STL使用模板,它可以绕过JIT开销并仍然创建真正的,编译的,静态类型的集合.

用C#编写的本机代码(不安全块,引脚指针,Marshal ......)与C++本地编写的相同代码具有相同的性能吗?

虽然C#不安全的代码执行得非常好,它不绑到运行时的休息非常好...例如,尝试做套接字代码不安全的缓冲区,而你刚刚结束了使用固定块随处可见,它变成一个噩梦.不仅如此,C++代码仍然会表现得更好.

在实际应用中,C#是否比C++更快(具有更好的性能)?

动态代码是想到,System.Reflection.Emit和LINQ表达式(尤其是在C#4.0中的新功能)最大的一个真正使代码生成在C#实用,而在C++类似的策略可能需要显著更多的努力(因此不实用).

  • 可以想象,在一个大型应用程序中,STL可能会变慢,因为它会实例化大量不同版本的模板代码,这可能会导致缓存问题.不过,我没有数字来支持这个理论! (3认同)