【问题标题】:Cross .NET Languages Performances跨 .NET 语言性能
【发布时间】:2009-01-04 20:25:56
【问题描述】:

完整的 C# 应用程序相比,在同一个应用程序(当然在不同的类库中)使用多种 .NET 语言(Delphi、VB.NET、C#)是否会降低性能 例如?

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    我不是 CLR 方面的专家,但我猜你会有非常相似的性能。所有语言都编译为在 CLR 上运行的 MSIL。根据编译器生成的 MSIL,性能可能会有所不同。即 VB.NET 中的类似代码可能会编译为比 C# 编译器更少(或更多)优化的 MSIL。

    【讨论】:

    • 同意。在某些情况下,使用能够最好地解决特定子系统的问题集的语言实际上可能是有益的。例如,将 F# 用于高度并行的计算程序。
    【解决方案2】:

    虽然我手头没有任何基准测试,但我会说大部分情况下它不应该这样做。那些不同的语言都将代码编译成CIL,所以你应该没问题。

    不同之处在于 DLR 上运行的语言(IronPython、IronRuby 等)。他们正在使用 CLR 中不存在的一些功能进行编译,这些功能成本更高。

    【讨论】:

      【解决方案3】:

      在没有任何确凿证据证明这一点的情况下,我只会做出有根据的猜测并说不。由于您的程序集被编译为几乎相同的 IL,因此您确实不会看到使用 CLR 语言的不同实现导致任何性能下降。

      【讨论】:

      • 但这有一个限制,即编译不同的dotnet语言到MSIL是相同的。我的意思是不同的编译器行为相同。
      【解决方案4】:

      正如其他答案所提到的,所有代码最终都编译为 CIL,因此如果代码在不同语言中一致地完成(并且您没有启用编译器优化),则生成的 IL 将非常相同.现在,如果您拥有相同的代码并使用编译器优化,您可能会得到一组不同的 IL,这会对性能产生影响。

      正如this answer 提出的,DLR 可能会对性能产生影响。尽管我听到/读到的大部分内容都表示性能影响几乎可以忽略不计。

      【讨论】:

        【解决方案5】:

        我同意其他答案。唯一可能影响性能的是,如果您正在加载许多程序集,您将看到开销。但是,开销与用于创建程序集的语言无关,但是如果您混合了许多不同的组件,您最终可能会得到比其他方式更多的程序集。如果您的应用程序不是这种情况,那么您应该没问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-23
          • 1970-01-01
          • 2016-02-09
          • 1970-01-01
          • 2011-01-26
          • 1970-01-01
          • 2010-09-07
          相关资源
          最近更新 更多