Мы не знаем.
На полном серьезе было бы очень удобно, если бы кто-то мог портировать приложение Android Linpack на Mono для Android, чтобы мы могли получить сравнение производительности между ними.
Вот что я делаю знаю:
- В настоящее время при первой загрузке приложения на G1 накладные расходы на запуск составляют ~ 3 с (пробег зависит от аппаратного обеспечения). Это связано с инициализацией среды выполнения Mono и загрузкой ссылочных сборок. Мы хотим улучшить это в будущем.
- Mono и Mono для Android, JIT все . Dalvik, между тем, имеет JIT кеш переменного размера (в настоящее время 1 МБ на ARMv7) и интерпретатор, поэтому в зависимости от вашего приложения возможно (вероятно), что не все будет JITed.
- Mono для Android использует JNI для вызова кода Android / Java.
Тогда есть сравнение производительности koush между Mono и Dalvik в 2009 . Это предшествует Dalvik JIT, но на идентичном оборудовании Mono был порка Dalvik.
Так, что это все значит? Я понятия не имею. (Опять же, порт Linpack для Mono для Android был бы замечательным! подсказка, толчок )
Тем не менее, есть несколько рекомендаций по производительности:
- Использование заставки во время запуска приложения. Это обеспечивает немедленную обратную связь во время запуска приложения, о чем беспокоится большинство пользователей.
- Если это вообще возможно, минимизировать переходы между моно и кодом Java. JNI никогда не выиграет медалей за производительность, поэтому, если вы можете делать больше кода в Mono без промежуточных вызовов методов Java, сделайте это.
- Минимизируйте количество экземпляров Java.Lang.Object, которые поддерживаются одновременно. Перекрестные виртуальные ссылки GC могут вызвать проблемы с производительностью.