Управляемый против неуправляемых

Что вы думаете о них?

Иногда мне приходится писать неуправляемый код на работе, но с большим количеством (игры) проектов, он просто становится намного более трудоемким и сложным, который решается, бросая больше людей на него.

Считаете ли вы, что управляемый код является жизнеспособным для крупномасштабных приложений? (приложения, такие как Photoshop, 3ds Max, , Maya, , XSI, etc, which are computationally intensive but don't have the realtime requirements of games (to a degree). , и т.д., которые являются вычислительно интенсивными, но не имеют в реальном времени требования игры (в определенной степени).

Ответ на: "Управляемый против неуправляемых"

Количество ответов:3

Я думаю, что использование неуправляемого кода по причинам производительности является одним из худших преждевременных оптимизаций I'#180;ve когда-либо слышал. Прежде чем выбрать некоторые технологии, которые труднее работать только потому, что это может быстрее вы должны быть очень уверены, что вам нужна скорость.

Кроме того, CLR настолько близка к неуправляемой производительности, что 99 из 100 случаев даже не должны думать об этом. И даже если вы попадаете в лагерь, который нуждается в производительности вы должны написать большую часть кода в управляемом пространстве, а затем переключиться на неуправляемые в частях, что ваш профилировщик говорит вам.

Об играх, в частности: было несколько больших названий, написанных на моно теперь, когда получил производительность, потому что они могли бы написать все в manged код и не пришлось прибегать к сценариям языки для абстрактных частей, как ИИ.

Я думаю, что вы можете сделать большие приложения с .NET. Есть много примеров там:

  • Части VisualStudio написаны в .NET (например, редактор WinForms и редактор WPF)
  • Выражение Blend написано в .NET и WPF
  • Stackoverflow использует .NET и ASP.NET, как и многие другие сайты.
  • В VisualStudio 2010, новый редактор (замена для текущей реализации) написан в .NET и WPF

Одно слово о вычислительно интенсивных приложений: Поскольку код компилируется к машинному коду переводчиком, большинство вычислений должно быть так быстро, как неуправляемый код.

С другой стороны, у вас есть много преимуществ:

  • (почти) нет утечек памяти (сборщик мусора)
  • Вы получаете исключения, когда что-то не так, нет аварии без информации
  • код работает одинаково хорошо на x32 и x64, без необходимости изменения или recompile приложение
  • C ' проще в использовании, чем C - (делегат, коллекции, LINЗ и т.д.)
  • ...

Потому что вы упомянули PhotoShop ... paint.net is a nice graphics package (not quite up to PhotoShop, but impressive nonetheless), written in C#. является хорошим графическим пакетом (не совсем до PhotoShop, но впечатляет, тем не менее), написанные на C.