2009-02-11 157 views
3

您對此有何看法?託管vs非託管

有時我必須在工作中編寫非託管代碼,但對於大型(遊戲)項目,它只是變得更加耗時和複雜,這可以通過投入更多人來解決。

您是否認爲託管代碼對於大規模應用程序是可行的? (應用程序,如Photoshop,3ds MaxMayaXSI,等等,這是計算密集型的,但沒有遊戲的實時性要求(在一定程度上)。

+0

該常見問題指出,應該問的問題可以'回答',而不僅僅是討論。至少這應該是社區維基。投票結束。 – 2009-02-11 19:33:40

+0

確定已更改爲wiki。 – 2009-02-11 19:35:21

+0

FFS爲什麼關閉它?這是一個wiki,非常有用。 – 2009-02-11 19:58:04

回答

3

我認爲使用非託管代碼的性能的原因是最差的一個過早的優化我聽說過,在你選擇一些難以工作的技術之前,你應該確信你需要這個速度。

除了CLR非常接近無法滿足的性能,在100個案例中,有99個甚至不必考慮這個問題,即使你進入了需要性能的陣營,你也應該將大部分代碼寫入托管空間,然後切換到解除部分你的分析器告訴你。

關於特別是遊戲:已經有上單writen在現在獲得的表現,因爲他們可以寫在manged代碼,並沒有一切不得不求助於腳本語言對於像抽象的部分大一些頭銜AI。

3

我想你可以用.NET來做大型應用程序。有許多例子在那裏:

  • VisualStudio中的零件都寫在.NET(如編輯的WinForms和WPF編輯)
  • Expression Blend的是寫在.NET和WPF
  • 使用#1 .NET和ASP .NET,就像許多其他網站一樣。
  • 2010年VisualStudio中,新的編輯器(替代目前的實現),是寫在.NET和WPF

一個字有關計算密集型應用:由於代碼被解釋編譯成機器代碼,最計算應該與非託管代碼一樣快。

在另一方面,你有很多的優點:

  • (幾乎)沒有內存泄漏(垃圾收集器)
  • 你會得到異常的時候什麼是錯的,沒有崩潰沒有信息
  • 的代碼在x32和x64上運行得同樣好,無需更改或重新編譯應用程序
  • C#比C++更容易使用(代理,集合,LINQ等)
  • ...
1

因爲你提到的PhotoShop ... paint.net是一個不錯的圖形軟件包(沒有達到到Photoshop,但仍然令人印象深刻),在C#編寫。