ART вместо Dalvik: почему Android 4.4 «ест» меньше ресурсов

С выходом новых версий Android эта ОС требовала все больше и больше оперативной памяти (ОЗУ). Первые аппараты с ней имели 256 МБ ОЗУ, но сегодня одного гигабайта уже может оказаться недостаточно. Однако в Google взялись за оптимизацию и выпустили Android 4.4 KitKat. Эта версия операционной системы работает быстрее, но при этом требует меньше ресурсов. Подобное стало возможным благодаря переходу с системы Dalvik на ART. О том, что это такое и почему смартфоны с Android 4.4 и будут работать быстрее на слабых процессорах, читайте ниже.

Одной из причин популярности мобильной ОС Google стала сравнительная легкость разработки приложений для нее. Благодаря этому магазин программ Google Play быстро наполнился утилитами. Подобное стало возможно с помощью виртуальной машины Dalvik, которая преобразовывала код приложений в понятный процессору мобильника или планшета. Программисты пишут так, как им удобно, и им не нужно заботиться о том, какой чипсет стоит в гаджете пользователя: от Qualcomm, Intel, Mediatek, nVidia, Samsung или другого вендора.

Из-за того что код приложений на лету трансформируется в понятный «железу» гаджета, разработчикам очень удобно создавать свои программы. Но из-за этого посредника в виде виртуальной машины Dalvik процессору устройства приходится выполнять в несколько раз больше действий: считать код, трансформировать его в понятный аппаратной части, выполнить его и вывести результат на экран. Следствие такой архитектуры мог наблюдать практически каждый владелец Android-девайса в виде подтормаживающего интерфейса. Когда смартфон не нагружен играми и вычислениями, оперативная память свободна, но простое перелистывание экрана все равно вызывает секундную задержку.

Google уже давно начала бороться с этой проблемой: первым серьезным шагом стал проект Project Butter, анонсированный вместе с Android 4.1 Jelly Bean. Благодаря ему операционная система стала несколько быстрее реагировать на действия пользователя, но в целом проблема осталась. Поэтому в Google создали готовят ART — замену виртуальной машине Dalvik.

Зачем Android нужна виртуальная машина

Любая программа использует множество стандартных действий: вывод изображения на экран, запись файлов в память, передачу файлов по Bluetooth или Wi-Fi. Чтобы облегчить программистам жизнь, операционная система имеет встроенные функции для выполнения этих заданий. Разработчику достаточно лишь в своем приложении указать «скопировать файл ХХХ на карту памяти в папку УУУ». Он не заботится о том, как это выполняется и сколько для этого требуется системных ресурсов.

Программисты также часто пишут «бракованные» программы, которые имеют ошибки в коде, «теряют» память и тому подобное. Виртуальная машина позволяет изолировать утилиты друг от друга и от ядра операционной системы. Благодаря этому крах приложения не оказывает влияния на ОС и другие запущенные программы. Без этого ошибка в утилите ведет к зависанию всей системы. Пользователи постарше могут помнить, как ошибки в прикладном ПО приводили к «синему экрану смерти» в настольных ОС Windows 95 и 98, которые не имели подобных механизмов виртуализации.

Файлы в формате APK, которые скачивает пользователь из Google Play Store или любого другого сервера, – это нескомпилированный код. Ни один компьютер не сможет его выполнить, так как просто «не поймет». Если бы утилиты поставлялись в уже скомпилированном и понятном «железу» виде, тогда часть из них работала бы, например, на устройствах с чипсетом Snapdragon, но выдавала бы ошибку при запуске на гаджетах с чипами Tegra.

Каждый производитель адаптирует Dalvik под свой процессор и аппаратное обеспечение. Благодаря этому одна и та же программа может работать на гаджетах практически любого производителя без правки ее исходного кода. И именно по этой причине нельзя просто взять и установить новую версию Android в устройство наподобие переустановки Windows.

Что такое Dalvik и почему он требует замены

Виртуальная машина Dalvik (названа в честь исландского рыболовного порта Дальвик) присутствует в Android от самого старта этой операционной системы в 2007 году. С тех пор она претерпела лишь одно крупное изменение: в Android 2.2 Froyo код из APK трансформировался в машинный код на лету сразу после запуска утилиты пользователем. Раньше он обрабатывался строчка за строчкой во время исполнения программы на мобильном устройстве. Новый подход позволил упростить запуск утилит и их работу, но это сказалось на требовании к аппаратным ресурсам. И сегодня уже одного гигабайта оперативной памяти может не хватать для быстрой работы мобильника.

Что такое ART и как она поможет Android

Виртуальная машина ART (расшифровывается как Android RunTime – среда исполнения программ Android) пока еще находится в экспериментальной стадии, но ее уже можно попробовать в Android 4.4 KitKat. Пользователи устройств с этой версией ОС могут переключиться с установленного по умолчанию Dalvik на ART.

Основное различие между этими виртуальными машинами – это подход к компиляции. Если Dalvik преобразует код в реальном времени сразу после запуска утилит, то ART делает это заблаговременно при установке. Это означает увеличение времени установки утилит и больший занимаемый объем в флеш-памяти устройства. Но это же означает и ускорение запуска и уменьшение требований к аппаратным ресурсам, особенно объему ОЗУ. Вот почему Android 4.4 KitKat, по словам Google, сможет быстро и стабильно работать на гаджетах с объемом оперативной памяти в 512 МБ. Новый подход к преобразованию кода позволит также уменьшить потребление заряда батареи.

Сравните объем одних и тех же программ при использовании Dalvik (слева) и ART (справа)

Dalvik против ART – сравнение

В целом виртуальная машина ART обещает много улучшений по сравнению с существующей Dalvik. Преимущества и недостатки каждой можно увидеть в таблице ниже:

Dalvik

ART

Преобразует файлы APK в понятный процессору код на лету, что требует меньше флеш-памяти для хранения, но из-за этого приложения дольше запускаются

Преобразует файлы APK в понятный процессору код заранее при их установке. Это требует меньше ресурсов процессора при запуске и уменьшает время старта программы

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

Кэш машинного кода создается при первой загрузке мобильника, из-за чего он включается значительно дольше

Лучше подходит для устройств с малоемким флеш-накопителем, так как кэш машинного кода занимает меньше места

Потребляет значительно больше флеш-памяти (на 10-20%), так как кроме файлов APK хранит скомпилированный машинный код каждой программы

Стабильная и проверенная временем

Новая и экспериментальная, могут обнаружиться непредвиденные ошибки и недостатки

Попробовать экспериментальный ART

Новый компилятор находится в стадии разработки и исследований, но пользователи его уже могут попробовать. Он доступен владельцам устройств под управлением Android 4.4 KitKat и на базе чипсета Snapdragon. Тем, кто решился попробовать новинку, стоит помнить, что новая виртуальная машина может сделать некоторые утилиты неработоспособными. Кроме того, после перезагрузки смартфон может потребовать до получаса для старта – это время понадобится ART на формирование кэша приложений.

Чтобы включить ART вместо Dalvik, нужно войти в меню разработчика. Для активации последнего требуется открыть настройки смартфона и перейти в раздел «О телефоне». Там нужно множество раз нажимать на кнопке «Номер версии», пока ОС не сообщит о доступности нового меню. После этого требуется выбрать используемую виртуальную машину и перезагрузить устройство.

В целом тесты пользователей, которые перешли на ART, свидетельствуют об общем ускорении работы примерно на 50% и увеличении времени работы от батареи до 30%.

По материалам: Addictivetips

1 коментар

НАПИСАТИ ВІДПОВІДЬ

Коментуйте, будь-ласка!
Будь ласка введіть ваше ім'я