2009-02-11 160 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#编写。