2010-06-08 4 views
3

Мне нужно использовать .NET/C# для следующего проекта компании. Когда я разработал свой проект на Mac, я заглянул в моно для среды разработки/инструмента.Моно достаточно быстро для Mac OS X?

Моно для Mac OS X достаточно быстро? Я имею в виду, как насчет производительности при запуске сборки по сравнению с запуском того же кода в .NET под машиной Windows?

Должен ли я покупать ПК-ноутбук для разработки C# /. NET в практическом смысле?

EDIT: Спасибо за ответы. Я вижу, что другое, что я должен рассмотреть, это вопросы совместимости и средства разработки. Я хотел спросить, насколько хорош моно; если mono в 10 раз медленнее, чем Windows .NET. Лучше не использовать его. Но, если моно всего в 1,5 раза медленнее, то почему бы и нет?

ответ

15

Для интерактивных приложений обычно не наблюдается различий в производительности между Mono и .NET на эквивалентном оборудовании.

Есть несколько вещей, которые вы заметите: текущий GC

  • Mono является консервативным, не поколениями.
  • Модифицированный движок Mono не такой продвинутый, как .NET.
  • В задачах с интенсивным вычислением (например, обработка изображений или обработка видео) ожидайте, что Mono будет составлять 70% от скорости .NET.
  • Моно на OSX имеет несколько известных медленных путей кода для локального хранилища потоков и нескольких других небольших проблем.

Все это фокусные зоны для команды, поэтому вы скоро увидите изменения в обоих случаях. Мы работаем над новым GC, который является поколением, таким как .NET, предварительный просмотр будет дебют в 2.8.

Теперь кодогенератор может использовать LLVM, в 2.6 он в порядке, в 2.8 он будет иметь покрытие кода 99,8% (от текущих 60 или 70). К сожалению, LLVM делает очень медленное время компиляции JIT, поэтому мы используем его только для сценариев «ngen» или для программ, которые хотят повысить производительность за счет скорости запуска.

С LLVM мы можем сопоставлять .NET и Java на большинстве тестов с несколькими исключениями.

И, наконец, ограничения, связанные с OSX, обрабатываются, а также будут находиться в 2.8.

3

Если целевая платформа является ПК с ОС Windows, я настоятельно рекомендую вам ее получить. Не обязательно для развития (хотя это облегчило бы), но определенно для тестирования и поиска ошибок.

Редактировать: Я не парень Mac, но вы не можете запускать Windows на виртуальном ПК или что-то в этом роде с вашей ОС? Что касается .NET/C#, вам будет трудно найти лучшую среду IDE, чем Visual Studio (личное мнение).

+0

Виртуальный ПК давно ушел. На базе Mac на базе Intel теперь можно запускать Windows. Я дважды загружаю свой MacBook Pro ... фактически, он загружается в Windows прямо сейчас. –

+0

Я был Boot Camp/Parallels, о котором я думал. Parellels - это «виртуальный» вариант ПК. –

2

Если у вас Mac на базе Intel, нет, вам не нужно покупать новый компьютер. Вы можете использовать Boot Camp или Parallels для запуска Windows изначально.

0

Я бы сказал, что вы должны хотя бы получить копию Windows, запущенной внутри Bootcamp или Parallels Desktop. Для развития я бы сказал Bootcamp по соображениям производительности.

Моно не обязательно поддерживает все в .NET Framework. Большинство из них, да, но не все.

Также вам нужна локальная копия SQL Server (Express)? Большинство проектов, которые я знаю об использовании .NET, также используют SQL Server для их обратной связи. Для этого вам понадобятся окна, если это так.

Как правило, при разработке для конкретной среды вы должны запускать эту среду.

7

Чтобы ответить на ваш вопрос напрямую: да, производительность Mono достаточно быстро развивается на Mac. Когда мы переносили код Remoting из .NET в Mono несколько лет назад, все прошло очень сильно, но мне сказали, что с тех пор Mono значительно улучшилось. Что касается среды разработки: #develop и MonoDevelop являются кросс-платформенными.

Теперь, чтобы получить практический:

Суть за этот вопрос, кажется, идея избежать покупки лицензии для Windows и Mac с помощью Mono и только. Это ужасная идея. Я бы никогда не выпустил какой-либо продукт, даже внутренне, что я никогда не запускал себя в предполагаемой среде. Даже если вы ненавидите Windows и все, что она означает, если вы пишете программное обеспечение для Windows, вы обязаны своим пользователям тщательно протестировать его в Windows.

Это сказало: я бы рекомендовал Boot Camp и Parallels/VMWare.

Boot Camp
Лучшие средства разработки .NET только для Windows. Даже если вы найдете альтернативного разработчика.которую вы предпочитаете, в конечном итоге вы захотите протестировать свои приложения на собственной скорости.

виртуальных машин
виртуальные машины достаточно хороши для большинства тестирования и отладки. Если ваше приложение имеет возможность нанести какой-либо ущерб, вы особенно захотите использовать виртуальные машины для песочницы. На моей последней работе мы провели низкоуровневое инвазивное сканирование и настройку. Когда наш код был глючит, мы могли бы ДЕЙСТВИТЕЛЬНО повредить вещи. Все наши испытания произошли в виртуальных машинах задолго до того, как мы разместили их на реальных коробках.

Вышеприведенная воли позволяют иметь только Mac (если это Intel на базе) и по-прежнему позволит вам сделать все ваши разработки в OS X + Mono, если вы так желаете. Это просто не позволит вам избежать Windows.

1

Если вам платят за то, что вы должны написать решение C# .net, которое должно быть запущено в Windows в его окончательной форме, вы не сможете уйти с развитием его каким-либо другим способом. Или позвольте мне сказать вам это так; Вы спросили своего начальника? Пойдите, сделайте это. Подождем.

Вы можете использовать оборудование Mac для работы с ОС Windows. Вы можете использовать свой Mac с помощью VMWare или Parallels или BootCamp.

0

Мы разработали код для Mac OS X на Mono уже около 5 лет. Производительность становится все лучше и лучше. GUI будут сильно зависеть от выбранной вами библиотеки. MonoMac кажется отличным вариантом прямо сейчас.