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

- ще один відмінний виступ на Google I / O, присвячене оптимізаціям в середовищі виконання Android P. Виступ стосується трьох пунктів:

  • Kotlin;
  • пам'ять;
  • хмарні профілі.

З Kotlin все виявилося досить просто, доповідачі розповіли про винесення null-перевірок в викликають функції, оптимізацію циклів і деяких інших речей.

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

В середньому CompactDex дозволив скоротити розмір зберігається в пам'яті пристрою коду програми на 11,6%. Це стосується і постійної пам'яті, і оперативної, але не стосується самих додатків, що поширюються через маркети.

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

- ще один відмінний виступ на Google I / O, присвячене оптимізаціям в середовищі виконання Android P

Як відбувається обробка встановленого APK в Android O і Android P

Ну і нарешті, хмарні профілі. Це більш проста, але ефективна ідея. Під час виконання будь-якої програми Android будує профіль його виконання. У майбутньому такий профіль дозволяє середовищі виконання «підлаштуватися» під додаток і запустити його швидше.

Ідея функції Cloud Profiles в тому, щоб зібрати дані профайлінга з різних пристроїв, агрегувати їх і прикріпити до додатка в Google Play у вигляді єдиного файлу профайлінга. Коли користувач завантажить додаток, він також отримає файл профайлінга, і система зможе використовувати його для прискорення запуску додатка. Надалі профіль буде поповнений і розширено самим пристроєм.

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

Як працюють хмарні профілі

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