2010-06-08 61 views
3

我必须将.NET/C#用于下一个公司项目。当我在Mac上开发我的项目时,我研究了开发环境/工具的单声道。Mac OS X的单声道速度足够吗?

Mac OS X的单声道速度够快吗?我的意思是,运行程序集的性能与在Windows计算机上运行.NET上的相同代码相比,性能如何?

在实际意义上,我是否必须购买用于开发C#/ .NET的PC笔记本电脑?编辑: 感谢您的答案。我发现我应该考虑的另一件事是兼容性问题和开发工具。 我想问一下单声道有多好,如果mono比windows .NET慢10倍。我最好不要使用它。但是,如果单声道慢了1.5倍,那为什么不呢?

回答

15

对于交互式应用程序,您通常不会注意到Mono和.NET在等效硬件上的性能差异。

有几件事情,你会发现:

  • Mono的当前GC是保守的,不代。
  • Mono的codegen引擎没有.NET那么先进。
  • 对于计算密集型任务(例如,进行图像处理或视频处理),​​期望Mono是.NET速度的70%。
  • OSX上的单声道有一些已知的线程本地存储的慢代码路径和一些其他小问题。

所有这些都是团队的重点领域,所以您会很快看到两种情况下的变化。我们正在开发一款新一代的GC,如.NET,预览版将在2.8版中推出。

codegen引擎现在可以选择使用LLVM,在2.6中没问题,在2.8中它将具有99.8%的代码覆盖率(从当前的60或70)。令人遗憾的是,LLVM使JIT编译时间非常缓慢,所以我们只将它用于“ngen”类似的场景,或者用于需要以启动速度为代价获得更高性能的程序。

使用LLVM,我们可以在大多数测试中匹配.NET和Java,只有少数例外。

最后,OSX特定的限制正在进行中,并且也将在2.8。

3

如果目标平台是Windows PC,那么我强烈建议您购买一个。不一定用于开发(尽管这会使它更容易),但肯定用于测试和狩猎bug。

编辑:我不是一个苹果的家伙,但你不能在虚拟PC中运行Windows或类似于你的操作系统的东西吗?就.NET/C#而言,你将很难找到比Visual Studio更好的IDE(个人观点)。

+0

虚拟PC早已不复存在。基于Intel的Mac现在可以本机运行Windows。我双启动我的MacBook Pro ...实际上,它现在被启动到Windows中。 – 2010-06-08 18:54:30

+0

雅是我正在考虑的Boot Camp/Parallels。 Parellels是“虚拟”PC选项。 – 2010-06-08 19:30:43

2

如果您有基于Intel的Mac,不需要购买新电脑。您可以使用Boot Camp或Parallels来本机运行Windows。

0

我会说你应该至少得到在Bootcamp或Parallels Desktop中运行的Windows的副本。对于开发,我会说Bootcamp出于性能原因。

单声道不一定支持.NET Framework中的所有内容。大部分是,但不是全部。

你还需要SQL Server(Express)的本地副本吗?我所知道的大多数使用.NET的项目都使用SQL Server作为数据后端。如果是这种情况,你也需要Windows。

通常,当为特定环境开发时,应该运行该环境。

7

要直接回答您的问题:是的,Mono的性能足以在Mac上开发。几年前,当我们将.NET中的Remoting代码移植到Mono时,情况变得非常糟糕,但我听说Mono自那以后已经有了很大的改进。关于开发环境:#developMonoDevelop是跨平台的。

我们得到实用:

后面这个问题的要点似乎是避免购买一个Windows许可证,并使用仅适用于Mac和Mono的想法。这是一个可怕的想法。我永远不会发布任何产品,甚至在内部,我甚至从未在预期的环境中运行自己。即使您憎恶Windows及其所代表的一切,如果您正在为Windows编写软件,您应该由用户在Windows中彻底测试它。

那就说:我推荐Boot Camp Parallels/VMWare。

新兵训练营
最好的.NET开发工具只有Windows。即使你找到了另一个开发者。你更喜欢的环境,你最终会想测试你的应用程序以本地速度运行。

虚拟机
虚拟机对于大多数测试和调试已经足够了。如果您的应用程序有可能造成任何破坏,您将特别想使用虚拟机进行沙盒。在我上一份工作中,我们进行了低级别的有创扫描和调整。当我们的代码有问题时,我们可以真的搞砸了。我们所有的测试都在虚拟机上发生,很久以前我们就把它们放在真实的盒子里

以上允许你只拥有一台Mac(假设它是基于Intel)和将仍然允许,如果你愿意的话,你做的所有发展的OS X +单声道。它只是不会让你避免Windows。

1

如果您正在为编写必须在Windows上以最终形式运行的C#.net解决方案付款,那么您无法以任何其他方式进行开发。或者让我这样对你说吧;你问过你的老板?去做那个。我们将等待。

尽管您可以使用Mac硬件来运行Windows操作系统。您可以使用Mac,使用VMWare或Parallels或BootCamp。

0

我们已经在Mono上为Mac OS X开发了大约5年的代码。性能越来越好。图形用户界面很大程度上取决于你选择的图书馆。 MonoMac现在似乎是一个很好的选择。