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

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

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

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

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

Ответы (1)

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

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

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

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

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

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

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