单声道对于Mac OS X来说足够快吗?

时间:2010-06-08 17:20:05

标签: .net performance mono

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

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

我是否必须购买PC笔记本电脑才能在实际意义上开发C#/ .NET?

编辑: 谢谢你的回答。我看到我应该考虑的另一件事是兼容性问题和开发工具。 我想问一下单声道有多好;如果mono比Windows .NET慢10倍。我最好不要用它。但是,如果单声道只慢1.5倍,那么为什么不呢?

7 个答案:

答案 0 :(得分:15)

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

您会注意到一些事情:

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

所有这些都是团队的重点领域,因此您很快就会看到两种情况的变化。我们正在开发一款新一代的GC,就像.NET一样,预览将在2.8中首次亮相。

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

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

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

答案 1 :(得分:7)

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

现在要变得实用:

这个问题背后的要点似​​乎是避免购买Windows许可证并仅使用Mac和Mono。这是一个糟糕的主意。我永远不会发布任何产品,甚至内部,我甚至从未在预期的环境中运行自己。即使您厌恶Windows及其所代表的一切,如果您正在为Windows编写软件,您也应该向用户在Windows中对其进行全面测试。

说:我建议使用Boot Camp Parallels / VMWare。

训练营
最好的.NET开发工具仅限Windows。即使你找到了另一个开发者。您更喜欢的环境,您最终希望测试以原生速度运行的应用程序。

<强>虚拟机
虚拟机足以满足大多数测试和调试需求。如果您的应用程序可能会造成任何损害,您将特别希望使用VM进行沙盒处理。在我上一份工作中,我们进行了低级别的侵入式扫描和调整。当我们的代码有问题时,我们可能真的搞砸了。我们所有的测试都发生在虚拟机中,早在我们将它们放在真正的盒子上之前。

以上允许您只拥有一台Mac(假设它是基于Intel的)并且如果您愿意,仍然允许您在OS X + Mono中进行所有开发。它只是不允许你避开Windows。

答案 2 :(得分:3)

如果目标平台是Windows PC,那么我强烈建议您购买一台。不一定用于开发(虽然这会使它更容易),但绝对是测试和搜寻错误。

编辑:我不是Mac人,但是你不能在虚拟PC中运行Windows或者你的操作系统附带的东西?就.NET / C#而言,您将很难找到比Visual Studio(个人观点)更好的IDE。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

如果您有资格编写一个必须以最终形式在Windows上运行的C#.net解决方案,那么您无法以任何其他方式开发它。或者让我这样把它给你;你问老板了吗?去那样做。我们等一下

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

答案 5 :(得分:0)

我想说你至少应该在Bootcamp或Parallels Desktop中运行一份Windows副本。为了开发,我会说出Bootcamp的性能原因。

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

您还需要SQL Server(Express)的本地副本吗?我所知道的大多数使用.NET的项目也使用SQL Server作为数据后端。如果是这样的话你也需要窗户。

通常,在针对特定环境进行开发时,您应该运行该环境。

答案 6 :(得分:0)

我们已经在Mono上为Mac OS X开发了大约5年的代码。性能越来越好。 GUI将在很大程度上取决于您选择的库。 MonoMac目前似乎是一个很好的选择。