3

你对他们有什么看法?

有时我必须在工作中编写非托管代码,但是对于大型(游戏)项目,它只会变得更加耗时和复杂,这可以通过投入更多人来解决。

您认为托管代码对于大规模应用程序是否可行?(像 Photoshop、3ds MaxMayaXSI等应用程序,这些应用程序计算密集,但没有游戏的实时要求(在一定程度上)。

4

3 回答 3

3

我认为出于性能原因使用非托管代码是我听说过的最糟糕的过早优化之一。在您选择一些更难使用的技术之前,因为它可能更快,您应该非常确定您需要速度。

此外,CLR 的性能非常接近无人值守的性能,以至于 100 个案例中有 99 个甚至不必考虑它。即使您属于需要性能的阵营,您也应该在托管空间中编写大部分代码,然后在探查器告诉您的部分中切换到非托管空间。

特别是关于游戏:现在已经有一些在单声道上编写的更大的游戏获得了性能,因为它们可以用托管代码编写所有内容,而不必为 AI 等抽象部分使用脚本语言。

于 2009-02-11T19:34:48.090 回答
3

我认为您可以使用 .NET 进行大型应用程序。那里有很多例子:

  • VisualStudio 的一部分是用 .NET 编写的(例如 WinForms 编辑器和 WPF 编辑器)
  • Expression Blend 是用 .NET 和 WPF 编写的
  • Stackoverflow 和许多其他网站一样使用 .NET 和 ASP.NET。
  • 在 VisualStudio 2010 中,新的编辑器(当前实现的替换)是用 .NET 和 WPF 编写的

关于计算密集型应用程序的一句话:由于代码由解释器编译为机器代码,因此大多数计算应该与非托管代码一样快。

另一方面,你有很多优势:

  • (几乎)没有内存泄漏(垃圾收集器)
  • 出现问题时会出现异常,没有信息就不会崩溃
  • 代码在 x32 和 x64 上同样运行良好,无需更改或重新编译应用程序
  • C# 比 C++ 更易于使用(委托、集合、LINQ 等)
  • ...
于 2009-02-11T19:39:30.917 回答
1

因为您提到了 PhotoShop ... paint.net是一个不错的图形包(不完全符合 PhotoShop,但令人印象深刻),用 C# 编写。

于 2009-02-11T19:41:45.170 回答