2009-06-20 69 views
0

为Silverlight 2,它看起来像编程的选择是:Silverlight 2中DLR语言和C#之间的速度有什么区别?

  • C#
  • VB
  • DLR脚本语言
    • IronRuby的
    • IronPython的
    • 一个令人遗憾地被忽视(如果不取消)托管jScript

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

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

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

回答

11

不幸的是,这个问题没有硬性和快速的答案。即使是相同语言的表现也会因为许多参数而发生很大变化。

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

但是,大量工作都用于优化基于DLR和DLR的语言。这些工作大部分都通过各种缓存等来缓解。在许多类型的应用程序中,性能差异将可忽略不计。

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

+0

所有这一切都有道理。我只是想知道使用IronPython的人是否发现自己编写的C#比他们预期的要多。 – Nosredna 2009-06-21 00:32:20

3

通常,优化算法比静态语言重写会有更大的影响。

您可能对.NET Rocks的Show #429感兴趣,访问Michael Foord。下面是来自transcript相关摘录:

动态语言是一个更容易 测试,他们正在真正适合于 测试驱动开发方法 的开发者在那个 时间服用。但我认为,对于 性能的原因,他们会有 重写在C#在某个时间点,然后 然后三和一年后,我们 得到了40,000行IronPython代码, 我们有大约140。000线非 测试代码,我们有一些类型的每次 他们来每次他们来的时间看演出, 说找到 一个操作,即不工作 约300行C#和快速 足够,我们已经能够通过提高我们的 算法,得到 速度我们需要改善我们的Python 代码,并没有下降到C#, 的原因程序运行速度慢是 通常不是语言的过错, 这是程序员, 开发人员的错。

+0

隐藏在胡子后面的是很多IronPython的知识;-p – 2009-06-23 14:49:34

相关问题