c# - 为什么 .net 语言的性能会有所不同?

标签 c# .net performance programming-languages

我听说 C++ .NET 最快,C# 次之,其次是 VB .NET,Iron-Python 和 Boo 等语言在性能方面垫底。如果所有 .NET 语言都编译为相同的中间字节码,为什么性能会有所不同?

这对于 Boo 和 Python 来说是可以理解的,因为所有类型都必须在运行时进行评估。但为什么 C++ 和 C# 等语言之间存在差异?

最佳答案

Python 的性能较差,因为它是解释性的,而不是编译性的。它不是在运行前转换为 CIL(通用中间语言),而是在运行时转换,这显然会产生性能开销。

此外,由于 IronPython 是动态类型的,因此与静态类型语言(C++、C#,以及尽管有 Pythonesque 语法,但 Boo 也是)相比,可以进行的优化更少。

您还必须考虑对每个实现进行优化所付出的努力。 C# 和 C++.NET 在 Microsoft 拥有庞大的团队,致力于使他们的编译器尽可能生成最快的字节码。 IronPython 和 Boo 是志愿者项目,没有那么多的人力或资源,因此它们不会像 MS 资助的项目那样快速获得优化。

本质上,语言特性在编译时和运行时都会产生性能/内存成本。这就是 .NET 语言性能不同的原因;因为它们的功能各不相同。

关于c# - 为什么 .net 语言的性能会有所不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6509146/

相关文章:

c# - 在 C# 中通过 tcp 发送整数数组

.net - 有条件的 .NET 应用程序设置

c - 快速替换数组中元素的方法 - C

android - 如何更高效地绘制Opengl Elements

performance - 具有层次结构性能的 DocumentDB 与键值数据库

c# - 正则表达式用于匹配两个数字之间的特殊字符

c# - 如何使我的数字生成器包含最大值? C#

c# - 将属性复制到接口(interface)拦截器生成的代理

c# - .Net 4.0 中没有 ConcurrentList<T> 吗?

c# - 在哪里可以找到 Windows 中的默认 Winforms 图标?