Производительность MonoTouch по сравнению с Objective-C / Java - PullRequest
9 голосов
/ 18 апреля 2011

Я нахожусь в процессе разработки многоплатформенного игрового движка и использую MonoTouch для Android и iPhone. Я действительно заинтересован в аспекте производительности при использовании MonoTouch для разработки под iOS и Android. Кто-нибудь знает, какое влияние окажет MonoTouch на производительность при разработке с использованием Java или Objective-C для их соответствующих платформ? Я спрашиваю об этом с точки зрения разработчиков игр, поэтому такие вещи, как рисование кода и тому подобное, меня действительно волнуют. Из того, что я видел, моно-приложения работают нормально, но, скажем, вы сделали игру на уровне Angry Birds (художественные работы, звук, физическая обработка), это будет достаточно хорошо работать через моно, что вы не поставите на значительный уровень недостаток по сравнению с использованием родного языка платформы?

1 Ответ

21 голосов
/ 18 апреля 2011

Во-первых, уточнение: на Android код выполняется не во время выполнения Java, а в Dalvik (написанный Google с нуля). Таким образом, производительность Java VM не имеет отношения к этому вопросу.

С учетом этого: большинство программ на Android не выполняют собственный код, а работают на Dalvik VM (которая выполняет переведенный байт-код Java). Моно JIT ранее сравнивался с ним и постоянно находился быстрее (проверьте, например, http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html).

В iOS MonoTouch должен предварительно скомпилировать код в собственное приложение, прежде чем его можно будет установить на устройстве Apple (из-за лицензионных ограничений, которые применяются операционной системой). Тем не менее, и Objective C компилятор, и Ahead Of Time Compilation Mono используют один и тот же LLVM бэкэнд для генерации и оптимизации двоичного кода, так что результаты вы получите должно быть почти идентичным (с некоторыми накладными расходами памяти для Mono).

Пожалуйста, помните одну важную цитату Дональда Кнута: «Преждевременная оптимизация - корень всего зла». Напишите свой код с учетом производительности, но помните, что удобство сопровождения важнее. Оптимизация должна проводиться только тогда, когда это необходимо (потому что обычно компилятор будет работать намного лучше, чем вы).

...