2010-06-08 64 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現在似乎是一個很好的選擇。