Dalvik VM vs. ART (Android Runtime): влияние на конечных пользователей?

22

С Nexus 5 (Android 4.4 KitKat) Google выпустила две среды выполнения для запуска приложений.

Выберите параметр времени выполнения в Android 4.4 KitKat Dalvik и ART Runtime в Android 4.4 KitKat

Каковы различия между Dalvik & ART для конечных пользователей? Как это может повлиять на конечных пользователей? Есть ли какая-то конкретная причина, по которой я должен выбрать новую среду выполнения ART?

Android Quesito
источник
3
Тот факт, что вы должны включить и выполнить поиск по параметрам разработчика, чтобы найти этот параметр, должен указывать на то, что он не предназначен для конечных пользователей.
Дэн Халм
1
@DanHulme Хороший вопрос, но энтузиасты, не являющиеся разработчиками, по-прежнему играют с опциями разработчика и даже много раз используют его для позитивных целей, не связанных с разработкой.
Android Quesito
Поскольку пользовательский опыт важен для вас, вы заметите только то, что заряд батареи значительно экономится, однако вы не сможете увидеть разницу в скорости при переходе с Dalvik на ART.
Рахул Райна

Ответы:

26

Dalvik VM (виртуальная машина) - это версия Google VM от Java (на которой запускаются приложения). ВМ хранят приложения изолированными и независимыми от реального оборудования и других приложений. Но чтобы это работало, Dalvik необходимо преобразовать так называемый байт-код (разработанный для виртуальной машины) в машинный код. Чтобы минимизировать снижение производительности, которое вводит преобразование байт-кода в собственный код, выполняется процесс, называемый JIT-компиляцией, который преобразует горячий, то есть часто используемый, байт-код в собственный код. 1

ART (Android Runtime) - это замена Dalvik, использующая компиляцию Ahead-Of-Time (AOT), то есть ваши приложения компилируются в состояние готовности к запуску еще до того, как вы их запустите. Обычно это делается во время установки приложения, чтобы процесс их запуска и использования стал намного быстрее и плавнее. А поскольку это означает, что компиляция выполняется только один раз, вы также можете увидеть лучшее время автономной работы.

Если АРТ лучше с точки зрения производительности и срока службы аккумулятора, стоит ли мне его использовать?

Нет. Если вы это сделаете, вы можете взломать сторонние приложения. Google выпустил этот предварительный просмотр ART с Android 4.4 для разработчиков, чтобы протестировать свои приложения на нем.

Дополнительное примечание: подход Google к ART заключается в том, чтобы превзойти iOS (приложения для iOS являются нативными, поэтому работают лучше даже на слабых аппаратных спецификациях), но я не знаю, к чему это приведет ... Еще одна фрагментация? Смотрите OEM-производители могут свободно создавать устройства, используя один или оба . Хотя окончательная версия не должна влиять на большинство приложений, она не является кроссплатформенной.

1 Обратите внимание, что JIT был добавлен в Dalvik в Android 2.2

Android Quesito
источник
3
Возможно, стоит отметить два факта: AOT ART приводит к тому, что приложения используют на 20,25% больше памяти по сравнению с DEX. Плюс тесты на Nexus-5, которые я читал, не показали никаких различий ни в субъективной скорости, ни в выносливости батареи. И то и другое, безусловно, улучшится, учитывая, что ART в KitKat - это просто предварительный просмотр разработчиками и проверка совместимости (что, например, не удалось WhatsApp). Итак, я подхожу ко второму выводу Сачина: это еще не хорошо для конечных пользователей.
Иззи
2
Отличный ответ. Я взял свободу, чтобы немного ее улучшить. Но я не согласен с последним абзацем: ART не увеличивает фрагментацию: если ART считается готовым к работе, не должно иметь значения, запущено ли ваше приложение в Dalvik или ART, оба используют один и тот же формат .dex в качестве отправной точки. Только что ART делает AOT компилировать .dex в нативный код.
Поток