对于Silverlight 2,看起来编程选择是:
是否这种情况下,本地语言(C#和VB)比DLR语言快一个数量级左右?
当我进行Silverlight客户端编程时,在IronPython中“生活”的希望,还是我应该为处理器密集型工作投入C#?
我对语言的调查来自this set of examples for C# and VB和this page discussing the DLR。
答案 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