在Silverlight 2中,DLR语言和C#之间的速度有何不同?

时间:2009-06-20 23:09:58

标签: c# silverlight ironpython silverlight-2.0 ironruby

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

  • C#
  • VB
  • DLR脚本语言
    • IronRuby的
    • IronPython的
    • 一个可悲的被忽视(如果没有取消)托管的jScript

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

当我进行Silverlight客户端编程时,在IronPython中“生活”的希望,还是我应该为处理器密集型工作投入C#?

我对语言的调查来自this set of examples for C# and VBthis page discussing the DLR

3 个答案:

答案 0 :(得分:11)

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

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

然而,在优化基于DLR和DLR的语言方面做了大量工作。这些工作大部分都是通过各种缓存等来缓解的。在许多类型的应用中,性能差异将是可以忽略的。

我不排除仅基于性能的基于DLR的语言,除非分析器告诉我它实际上是一个问题。

答案 1 :(得分:3)

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

您可能对.NET Rock的Show #429感兴趣,这是对Michael Foord的采访。以下是transcript的相关摘录:

  

动态语言要容易得多   测试,他们真的很适合   测试驱动开发方法   开发商正在接受这一点   时间。但我认为是的   表现原因,他们会有   在某些时候重写C#,和   然后三年多一点我们   获得了40,000行IronPython代码,   我们有大约140.000行   测试代码,我们有一些类型   大约300行C#和每次   他们来看看表演,   每次他们来,说找到   一个不能快速运作的操作   够了,我们已经得到了   我们需要通过提高我们的速度   算法,通过改进我们的Python   代码而不必放入C#,   程序运行缓慢的原因是   通常不是语言的错,   这是程序员的错,   显影剂。

答案 2 :(得分:1)

你也可以使用Boo。以下是示例Silverlight Tetris with boo