В чем разница между DVM и ART? Почему DVM был официально заменен ART в Lollipop?
Начиная с Android Lollipop, Google заменил DVM на ART, потому что ART быстрее, чем DVM. Есть ли другая причина для этого?
Ответы
Ответ 1
В Далвике есть некоторые существенные улучшения производительности, которые предлагает АРТ. Но у всех профессионалов тоже есть минусы. Я попытаюсь обсудить здесь и преимущества, и недостатки.
1) Подход к компиляции
Это, безусловно, самое большое преимущество ART над Дальвиком. Старый парень Dalvik использовал подход Just-In-Time (JIT), в котором компиляция была сделана по требованию. Все файлы dex были преобразованы в их соответствующие нативные представления только тогда, когда это было необходимо.
Но ART использует подход Ahead-of-Time (AOT), в котором файлы dex были скомпилированы до их запроса. Это само по себе значительно повышает производительность и время автономной работы любого устройства Android.
Например
В случае Dalvik, когда вы касаетесь значка приложения, чтобы открыть его, необходимые файлы dex преобразуются в их эквивалентные коды. Приложение начнет работать только после завершения этой компиляции. Таким образом, приложение не отвечает, пока это не закончится.
Более того, этот процесс повторяется каждый раз, когда вы открываете приложение, теряющее процессорные циклы и ценный аккумуляторный сок.
Но в случае АРТ всякий раз, когда вы устанавливаете приложение, все файлы dex преобразуются раз и навсегда. Таким образом, установка занимает некоторое время, и приложение занимает больше места, чем в Dalvik, но производительность значительно улучшается, а срок службы батареи очень консервативно.
2) Время загрузки
В случае Dalvik кеш создается с течением времени, когда устройство запускается, и приложения используются, как указано в подходе JIT. Таким образом, время загрузки очень быстро.
Но в случае АРТ кеш создается во время первой загрузки, поэтому время загрузки значительно больше в случае АРТ. Иногда вы можете увидеть диалоговое окно "Оптимизация приложений", которое вы загружаете.
3) Использование пространства
Пространство, используемое приложениями, работающими на АРТ, намного больше, чем пространство для Дальвика. Как 20-мегабайтное приложение на Dalvik, занимает более 35 МБ на АРТ.
Поэтому, если вы находитесь на низком запоминающем устройстве, это может быть огромным недостатком для вас.
4) СКАЧАТЬ
Как обсуждалось выше, АРТ является чрезвычайно быстрым и гладким. Приложения очень быстрые и отзывчивые. Любое сравнение между Dalvik и ART, несомненно, заставит устройство ART получить значительный запас.
ART - это ответ всем, кто утверждал, что iOS быстрее и плавнее, чем Android, а также более эффективен в работе с батареями.
Ответ 2
В Android Lolipop DVM был заменен ART. Поскольку DVM конвертирует байт-код каждый раз при запуске определенного приложения. Но ART конвертирует его только один раз во время установки приложения. Это упрощает выполнение ЦП. ARM - это архитектура. Как MIPS, x86 и т.д. DVM/ART работает поверх ARM. Оба они не могут заменить друг друга. Надеюсь, это избавит вас от путаницы.
Ответ 3
Android 4.4 KitKat, Google решил внедрить новый способ выполнения приложений поверх операционной системы Android. Давайте более подробно рассмотрим, что это новое время выполнения, называемое ART
ART - это двухлетний постоянный секретный проект Google, целью которого является повышение производительности наших Android-устройств.
Android L (5.0) ART был сделан как стандартное время исполнения (ART полностью заменил Dalvik).
ART (Android RunTime) - это следующая версия Dalvik. Dalvik - это среда исполнения, байт-код и виртуальная машина, используемая системой Android для запуска приложений для Android.
Dalvik основан на компиляции JIT (как раз вовремя). Это означает, что каждый раз, когда вы запускаете приложение, часть кода, необходимая для его выполнения, будет переведена (скомпилирована) на машинный код в этот момент. По мере продвижения через приложение дополнительный код будет скомпилирован и кэширован, чтобы система могла повторно использовать код во время работы приложения. Поскольку JIT компилирует только часть кода, он имеет меньшую площадь памяти и использует меньше физического пространства на устройстве.
ART против Dalvik/AOT против JIT
Преимущества АРТ над Дальвиком:
- Скорость запуска приложений удивительно быстра в случае АРТ, поскольку при компиляции ничего не компилируется.
- Скорость загрузки быстрее, чем dalvik, поскольку ничего не выполняется из раздела dalvik, как в случае одексерованного ROM в далвике
- Увеличивает резерв батареи, сокращая работу процессора из-за отсутствия компиляции при выполнении приложений.
- Улучшенная сборка мусора (GC)
- И, наконец, это отличная награда для разработчиков, потому что большинство разработчиков обеспокоены тем, что odexed ROMs быстрее, чем дедексированные ROM, но они будут деодически их ROM, так как они сильно затрагивают его. В случае АРТ, независимо от того, является ли ПЗУ одексером или дедексированным, это не имеет значения, он компилирует полный код в машинный язык при установке приложений. поэтому даже деоксированные ПЗУ так же быстро, как и остекленные в АРТ
Недостатки АРТ
- Поскольку ART прекомпилирует приложения при установке, он занимает 10-20% пространства при установке, чем dalvik.
- Поскольку байт-коды dex преобразуются в собственный машинный код при самой установке, установка занимает больше времени.
Время установки на моем Nexus 4 для одного из наших крупных проектов подскочило с ~ 17 с до ~ 25 с.
Результаты Dalvik против ART Benchmark (Android 4.4): Linpack
Единственная тема ---> Dalvik (135) ---> ART (149) ---> 10,93%
Multi- Thread ---> Dalvik (336) ---> ART (383) ---> 13,82%
Ответ 4
В версии Android 4.4 и выше, наряду с Dalvik, Google представила новую версию Android Runtime под названием "ART".
Разница между ART против Dalvik
ART (Android RunTime) имеет встроенную компиляцию Ahead (Ahead of the Time)
AOT против JIT
Формат Android-приложений -.apk и все классы Java, преобразованные в байт-код DEX. Формат байт-кода DEX не зависит от архитектуры устройства и должен быть переведен на собственный машинный код для запуска на устройстве. Это то же самое и для АРТ, и для времени работы Dalvik.
Главным отличием, ART (Android RunTime) используется компиляция Ahead (Ahead), Dalvik используется компиляция Just-in-Time (JIT)
С Dalvik, Just-in-Time (JIT) компиляцией каждый раз при запуске приложения, он конвертирует dex-байтовый код в машинный код и кэшируется.
подробнее см. здесь http://androidboost.over-blog.com/2016/10/art-vs-dalvik.html
Ответ 5
Начиная с kitkat (версия Android 4.4), Google заменяет DVM времени выполнения на ART. Google делает это, потому что это улучшит производительность при запуске приложения. в DVM, пока вы нажимаете приложение, оно скомпилирует байт-код DEX и преобразует его в машинный код, обычно называемый JIT (Just In Time). Вместо того, чтобы запускать процесс компиляции при каждом запуске приложения, ART изменил этот способ, преобразовав байт-код DEX и преобразовав его в машинный код, когда приложение находится на этапе установки. Это может занять много времени, пока вы устанавливаете приложение, но это будет достаточно быстро, когда вы запустите приложение.