Достаточно ли моно для Mac OS X? - PullRequest
3 голосов
/ 08 июня 2010

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

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

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

РЕДАКТИРОВАТЬ: Спасибо за ответы.Я вижу, что другой вещью, которую я должен рассмотреть, были бы проблемы совместимости и инструменты разработки.Я хотел спросить, насколько хорош моно;если моно в 10 раз медленнее, чем Windows .NET.Я бы лучше не использовал его.Но если моно всего в 1,5 раза медленнее, то почему бы и нет?

Ответы [ 7 ]

15 голосов
/ 22 июня 2010

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

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

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

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

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

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

Наконец, работают ограничения, специфичные для OSX, и они также будут в 2.8.

7 голосов
/ 08 июня 2010

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

Теперь, чтобы практиковаться:

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

При этом я бы порекомендовал Boot Camp и Parallels / VMWare.

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

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

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

3 голосов
/ 08 июня 2010

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

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

2 голосов
/ 08 июня 2010

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

1 голос
/ 08 июня 2010

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

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

0 голосов
/ 05 ноября 2010

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

0 голосов
/ 08 июня 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...