Оптимизация Android P

Как Android отрисовывает картинку

What’s new in Android Runtime (Google I/O ’18) — еще одно отличное выступление на Google I/O, посвященное оптимизациям в среде исполнения Android P. Выступление касается трех пунктов:

  • Kotlin;
  • память;
  • облачные профили.

С Kotlin все оказалось довольно просто, докладчики рассказали о вынесении null-проверок в вызывающие функции, оптимизациях циклов и некоторых других вещей.

Две остальные части доклада куда интереснее. Во-первых, CompactDex — специальный компактный формат исполняемого файла Dex (в нем хранится код приложений для Android). В Android P формат CompactDex используется для хранения извлеченного из APK кода приложения, а также для хранения кода приложения в оперативной памяти.

В среднем CompactDex позволил сократить размер хранящегося в памяти устройства кода приложения на 11,6%. Это касается и постоянной памяти, и оперативной, но не касается самих приложений, распространяющихся через маркеты.

Также в Android P был усовершенствован JIT-компилятор, а точнее его часть, ответственная за оптимизацию расположения данных в оперативной памяти, когда наиболее часто используемые и нужные при загрузке приложения методы размещаются ближе к началу оперативной памяти процесса. Напомню, что начиная с седьмой версии Android использует гибридный JIT/AOT-компилятор, который сначала выполняет приложения, используя виртуальную машину, а лишь затем переводит приложение в машинные инструкции.

Оптимизация Android P
Как происходит обработка установленного APK в Android O и Android P

Ну и наконец, облачные профили. Это более простая, но эффективная идея. Во время исполнения любого приложения Android строит профиль его исполнения. В будущем такой профиль позволяет среде исполнения «подстроиться» под приложение и запустить его быстрее.

Идея функции Cloud Profiles в том, чтобы собрать данные профайлинга с разных устройств, агрегировать их и прикрепить к приложению в Google Play в виде единого файла профайлинга. Когда пользователь скачает приложение, он также получит файл профайлинга, и система сможет использовать его для ускорения запуска приложения. В дальнейшем профиль будет пополнен и расширен самим устройством.

На собственных приложениях Google система облачного профайлинга дала выигрыш в скорости первичного запуска примерно в 20%.

Оптимизация Android P
Как работают облачные профили

В ходе тестирования системы авторы сделали интересные выводы: в среднем в данные профайлинга попали только 14% кода приложения, а это значит, что остальные 86%, скорее всего, вообще не используются. Но это не обязательно мертвый код, это могут быть функции, отключенные на разных версиях Android, или, например, код отладки, отключенный в релизной версии.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий