2009-06-20 32 views
0

爲Silverlight 2,它看起來像編程的選擇是:Silverlight 2中DLR語言和C#之間的速度有什麼區別?

  • C#
  • VB
  • DLR腳本語言
    • IronRuby的
    • IronPython的
    • 一個令人遺憾地被忽視(如果不取消)託管jScript

這種情況下,本機語言(C#和VB)比DLR語言快一個數量級?

當我執行Silverlight客戶端編程時,IronPython中「生活」的任何希望,還是應該期待C#進行處理器密集型工作?

我對語言的調查來自this set of examples for C# and VBthis page discussing the DLR

回答

11

不幸的是,這個問題沒有硬性和快速的答案。即使是相同語言的表現也會因爲許多參數而發生很大變化。

是的,在一般 VB.Net和C#將比基於DLR的語言更快。靜態語言在編譯時會做更多的工作,例如方法綁定。這種類型的工作必須在基於DLR的語言的運行時完成,因此它們在運行時會有更多成本。

但是,大量工作都用於優化基於DLR和DLR的語言。這些工作大部分都通過各種緩存等來緩解。在許多類型的應用程序中,性能差異將可忽略不計。

我不排除僅基於性能的基於DLR的語言,除非分析人員告訴我這實際上是一個問題。

+0

所有這一切都有道理。我只是想知道使用IronPython的人是否發現自己編寫的C#比他們預期的要多。 – Nosredna 2009-06-21 00:32:20

3

通常,優化算法比靜態語言重寫會有更大的影響。

您可能對.NET Rocks的Show #429感興趣,訪問Michael Foord。下面是來自transcript相關摘錄:

動態語言是一個更容易 測試,他們正在真正適合於 測試驅動開發方法 的開發者在那個 時間服用。但我認爲,對於 性能的原因,他們會有 重寫在C#在某個時間點,然後 然後三和一年後,我們 得到了40,000行IronPython代碼, 我們有大約140。000線非 測試代碼,我們有一些類型的每次 他們來每次他們來的時間看演出, 說找到 一個操作,即不工作 約300行C#和快速 足夠,我們已經能夠通過提高我們的 算法,得到 速度我們需要改善我們的Python 代碼,並沒有下降到C#, 的原因程序運行速度慢是 通常不是語言的過錯, 這是程序員, 開發人員的錯。

+0

隱藏在鬍子後面的是很多IronPython的知識;-p – 2009-06-23 14:49:34

相關問題