对于 Silverlight 2,看起来编程选择是:

  • C#
  • VB
  • DLR 脚本语言
    • 铁红宝石
    • 铁蟒
    • 令人遗憾的是被忽视(如果没有取消)的托管 jScript

在这种情况下,本机语言(C# 和 VB)是否比 DLR 语言快一个数量级左右?

当我进行 Silverlight 客户端编程时,是否希望“生活”在 IronPython 中,或者我是否应该转向 C# 来进行处理器密集型工作?

我对语言的调查来自 这组 C# 和 VB 的示例本页讨论 DLR.

有帮助吗?

解决方案

不幸的是,这个问题没有硬性且快速的答案。即使是同一种语言,其性能也会因许多参数而有很大差异。

是的,在 一般的 VB.Net 和 C# 将比基于 DLR 的语言更快。静态语言在编译时执行更多工作,例如方法绑定。对于基于 DLR 的语言,此类工作必须在运行时完成,因此它们在运行时的成本要高一些。

然而,优化 DLR 和基于 DLR 的语言需要做大量工作。各种缓存等减轻了大部分工作。在许多类型的应用程序中,性能差异可以忽略不计。

我不会仅仅根据性能排除基于 DLR 的语言,除非探查器告诉我这实际上是一个问题。

其他提示

通常,优化算法比用静态语言重写具有更大的效果。

您可能感兴趣 显示 #429 .NET Rocks 的 Michael Foord 采访。这是相关摘录 成绩单:

动态语言更容易测试,它们非常适合当时开发人员采用的测试驱动开发方法。但是我认为出于绩效原因,他们必须在某个时候重写C#,然后三年后,我们获得了40,000行的Ironpython代码,我们的测试代码中有大约140.000行有一定类型的大约300行C#,每次他们来看性能时,每次他们来定位一个操作,该操作的运作不够快,我们就可以通过改进算法来达到所需的速度,通过改进我们的Python代码,而不必放入C#,而程序运行缓慢的原因通常不是语言的错,而是程序员,开发人员的错。

您也可以使用 Boo。这是样本 Silverlight 俄罗斯方块与嘘声

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top