Я тоже пытался понять это, потому что увидел, что Google движется к замене своей виртуальной машины Dalvik (по существу другой виртуальной машины Java, такой как HotSpot), с Android Run Time (ART), которая является компилятором AOT, но Java обычно использует HotSpot, который является JIT-компилятором. По-видимому, ARM ~ 2x быстрее, чем Dalvik ... поэтому я подумал: «Почему Java не использует AOT?». В любом случае, из того, что я могу собрать, основное различие заключается в том, что JIT использует адаптивную оптимизацию во время выполнения, которая (например) позволяет ТОЛЬКО те части байт-кода, которые выполняются часто, чтобы скомпилироваться в собственный код; тогда как AOT компилирует весь исходный код в собственный код, а код меньшей суммы работает быстрее кода большего количества. Я должен представить, что большинство приложений для Android состоят из небольшого количества кода, поэтому в среднем имеет смысл скомпилировать весь исходный код с помощью собственного кода AOT и избежать накладных расходов, связанных с интерпретацией / оптимизацией.
Если Вы будете на самом деле хороши в написании неуправляемого кода, то Вы, вероятно, сможете записать более быстрый графический механизм сверху DirectX. Однако для человека, увлеченного своим хобби, XNA имеет много из производительности, и для 2D и 3D разработки игр.
Вот хорошее видео Канала 9 , куда они выполняют XNA-созданную мчащуюся игру на Xbox 360. Это работает хорошо даже в full HD. Несколько из игр Xbox Live Arcade были разработаны сообществом XNA.
До C# DirectX, как, который я вспоминаю, Управляемый DirectX, как это назвали, официально больше не поддерживается, так как XNA в основном заменяет его. Я мог быть неправым, его очень долгое время, так как я посмотрел на него.
различия в производительности незначительны между XNA и Управляемым DirectX с тех пор, в сущности они - то же самое; XNA просто имеет несколько битов удобства для сокращения объема шаблона, кода Вас, должен записать.
Материал Game Studio Xna фокусируется вокруг решения игры центральные проблемы, хотя я подверг бы сомнению любой плакат, в котором говорится, что производительность игрового студийного материала Xna так хуже, чем управляемый прямой x, не видя некоторые достойные метрики.
независимая группа за пределами MS создала проект под названием SlimDx - http://slimdx.mdxinfo.com/ , Если Вы пишете приложение, а не игру (который я ожидаю, что Вы не другими вопросами), затем, это могло бы быть достойно рассмотрения.
промышленность все еще в большой степени использует C++ для игровых кишок, но были успешные выпуски игр, записанных в абсолютно управляемом коде с помощью XNA Game Studio на общественном игровом разделе живого Xbox, и выпустили на самом XBox Arcade. Должна быть некоторая интересная статистика, появляющаяся довольно скоро о том, сколько люди сделали на общественных играх.
Много игр полной цены используют C++ для некоторых, но что-то как Lua для фактической игровой логики... и Lua не известно сверкающей скоростью!
C# имеет хорошую кривую обучения и используется программистами инструментов в промышленности - это был бы полезный язык, чтобы иметь под Вашим поясом. C++ был бы большим языком, чтобы иметь, но он требует, чтобы больше дисциплины создало функциональный код - и дает кому-то новому намного больше веревки для зависания себя. C# может динамично изменить и сделать вещам нравится, разворачивают циклы в а не время компиляции во время выполнения - хороший C# может быть столь же быстрым или быстрее, чем хороший читаемый C++ - но необходимо знать, как использовать его. В действительно жестких циклах C++ и Ассемблер могли бы победить при определенных обстоятельствах. Часто в играх с помощью C++, пользовательские средства выделения создаются с их собственными стратегиями памяти попытаться помочь фрагментации, вызванной нормальными средствами выделения... с такой вещью имеет дело CLR в.Net/C# и, пока Вы программируете к преимуществам сборщиков "мусора" (то же, что Вы имели бы отношение к своей собственной реализации C++), затем, Вы не должны интересоваться такой низкоуровневой деталью реализации в .NET.
, Если Вы заглядываете к входу к разработке игр и выбору языка (который, читать между строк, кажется, куда Вы идете с той строкой опроса) затем лучший язык для использования является тем, где у Вас есть законченный проект показать в конце его, быть им C++, цель C, C#, Flash, Silverlight, и т.д. Когда языки изменяются и входят и в немилости, рекрутеры часто ищут доказанное мастерство различных языков - который мог бы смягчить не знание того, которое они в настоящее время используют - и портфель завершенной работы сделал бы это.