2009-01-04 59 views
2

是否使用多個.NET語言,(DELPHI,VB.NET,C#)到同一個應用程序(但當然型動物類庫)可下peformances相比全C#應用程序爲例如?跨.NET語言表演

回答

5

我不是CLR的專家,但我想你會有非常相似的表現。所有語言都編譯爲在CLR上運行的MSIL。性能可能會有差異,這取決於編譯器生成的MSIL。即,VB.NET中的類似代碼可能會編譯成比C#編譯器更少(或更多)優化的MSIL。

+0

同意。在某些情況下,使用能最好地解決特定子系統問題集的語言可能實際上是有益的。例如使用F#進行高度並行計算程序。 – Josh 2009-01-04 03:34:13

2

沒有任何確鑿的證據證明這一點,我只會做出一個有根據的猜測,並說不。由於你的程序集被編譯成幾乎相同的IL,所以你不會看到使用CLR語言的不同實現會導致性能下降。

+0

但是,這是與單一的限制,編譯不同的dotnet語言到MSIL是相同的。我的意思是不同的編譯器行爲相同。 – 2009-01-04 11:40:34

3

雖然我沒有任何基準,但我認爲大多數情況下不應該這樣做。這些不同的語言都將代碼編譯成CIL,所以你應該沒問題。

一個地方,這將是不同的是在DLR上運行的語言(IronPython,IronRuby等)。他們正在編譯使用CLR中不存在的一些功能,這些功能的運行成本更高。

1

正如其他答案所提到的,所有代碼最終都編譯爲CIL,因此如果代碼是跨語言一致地完成的(並且沒有啓用編譯器優化),那麼所得到的IL將會變得漂亮相同。現在,如果您使用相同的代碼並使用編譯器優化,則可能會得到一組不同的IL,這會影響性能。

正如this answer所提出的那樣,DLR可能會對性能產生影響。儘管我已經聽說/瞭解了大部分的內容,但是它們的性能影響幾乎可以忽略不計。

0

我同意其他答案。唯一可能影響性能的是如果你加載了很多程序集,你會看到開銷。但是,開銷與用於創建程序集的語言無關,但如果混合了許多不同的組件,則最終的組裝可能會多於其他組件。如果你的應用程序不是這種情況,你應該沒問題。