【发布时间】:2009-01-04 20:25:56
【问题描述】:
与完整的 C# 应用程序相比,在同一个应用程序(当然在不同的类库中)使用多种 .NET 语言(Delphi、VB.NET、C#)是否会降低性能 例如?
【问题讨论】:
与完整的 C# 应用程序相比,在同一个应用程序(当然在不同的类库中)使用多种 .NET 语言(Delphi、VB.NET、C#)是否会降低性能 例如?
【问题讨论】:
我不是 CLR 方面的专家,但我猜你会有非常相似的性能。所有语言都编译为在 CLR 上运行的 MSIL。根据编译器生成的 MSIL,性能可能会有所不同。即 VB.NET 中的类似代码可能会编译为比 C# 编译器更少(或更多)优化的 MSIL。
【讨论】:
虽然我手头没有任何基准测试,但我会说大部分情况下它不应该这样做。那些不同的语言都将代码编译成CIL,所以你应该没问题。
不同之处在于 DLR 上运行的语言(IronPython、IronRuby 等)。他们正在使用 CLR 中不存在的一些功能进行编译,这些功能成本更高。
【讨论】:
在没有任何确凿证据证明这一点的情况下,我只会做出有根据的猜测并说不。由于您的程序集被编译为几乎相同的 IL,因此您确实不会看到使用 CLR 语言的不同实现导致任何性能下降。
【讨论】:
正如其他答案所提到的,所有代码最终都编译为 CIL,因此如果代码在不同语言中一致地完成(并且您没有启用编译器优化),则生成的 IL 将非常相同.现在,如果您拥有相同的代码并使用编译器优化,您可能会得到一组不同的 IL,这会对性能产生影响。
正如this answer 提出的,DLR 可能会对性能产生影响。尽管我听到/读到的大部分内容都表示性能影响几乎可以忽略不计。
【讨论】:
我同意其他答案。唯一可能影响性能的是,如果您正在加载许多程序集,您将看到开销。但是,开销与用于创建程序集的语言无关,但是如果您混合了许多不同的组件,您最终可能会得到比其他方式更多的程序集。如果您的应用程序不是这种情况,那么您应该没问题。
【讨论】: