跨.NET语言性能

时间:2009-01-04 03:27:43

标签: c# .net

完整的C#应用​​程序相比,将多种.NET语言(Delphi,VB.NET,C#)用于同一个应用程序(当然是在不同的类库中)可以向下性能 例如?

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

虽然我手边没有任何基准,但我会说大部分都不应该。这些不同的语言都将代码编译成CIL,所以你应该没问题。

与此不同的地方是在DLR(IronPython,IronRuby等)上运行的语言。他们正在编译使用CLR中不存在的一些功能,而且操作成本更高。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

正如this answer提出的那样,DLR会对性能产生影响。我所听到/阅读的大部分内容虽然表明性能影响几乎可以忽略不计。

答案 4 :(得分:0)

我同意其他答案。唯一可能影响性能的是,如果您要加载许多程序集,您将看到开销。但是,开销与用于创建程序集的语言无关,但如果混合使用许多不同的组件,最终可能会产生更多的程序集。如果您的申请不是这种情况,那么您应该没事。