Програма Yelp для Android пішла на дієту

android

  • Колтін Каверхілл, інженер-програміст
  • 12 травня 2016 р

Будь то використання акумулятора, мережа чи час, ми дуже дбаємо про ресурси наших користувачів. Великий додаток створює бар'єр для входу для користувачів у мережах з обмеженою або низькою швидкістю. Минулого Дня Подяки, наші автоматичні сповіщення дають нам зрозуміти, що розмір нашої програми стає більшим, ніж ми хотіли, і ускладнюють завантаження нашої програми для користувачів з низькими ресурсами.

Тут ми побачили тенденцію до зростання розміру програми, оскільки ми додали більше функцій і створили більш привабливу програму. Для того, щоб вирішити розмір програми, ми спочатку мали зрозуміти, звідки цей розмір.

Розбивка збірки випуску приблизно у вересні 2015 року.

Переглядаючи ці два графіки, ми могли побачити, що зображення займали великий відсоток від загального розміру файлу .apk. Але чому вони зайняли більший відсоток місця після стиснення?

Причиною було те, що зображення не стискаються під час архівування файлів .apk. Це дає змогу зображенням відображати пам’ять із диска, а не завантажувати їх в оперативну пам’ять. Це чудова оптимізація сучасних операційних систем, таких як Android, але означає, що ми не можемо покладатися на процес APK для оптимізації зображень для нас. Кожен байт зображення перетворюється на байт останнього файлу .apk.

Почало здаватися, що ми можемо значно змінити ситуацію, зменшивши розмір файлу наших зображень. У пошуках потенційних удосконалень ми дізналися, що Android 4.2.1 представив новий формат зображення під назвою WebP, який вимагав кращого стиснення, ніж JPEG або PNG. На щастя, програма Yelp підтримує Android 4.4+, і її зображення в основному є PNG з декількома JPEG. Щоб перевірити претензії WebP, ми перетворили понад 2000 наших PNG за допомогою цієї команди:

Лише 8 із понад 2000 PNG-файлів, які ми стислили, не отримали вигоди від перетворення на WebP, і різниця для них була надзвичайно незначною (лише близько 400 байт). Загалом, розмір нашого стиснутого файлу .apk зменшився з 27,1 МБ до 23,1 МБ без втрати якості зображень. Наша розбивка все ще надавала перевагу зображенням трохи, але не настільки суттєво.

Це зменшення розміру було чудовим, але ми мали сумніви щодо продуктивності роботи. Чи буде WebP вимагати набагато більше часу на обробку для декодування/відтворення? Чи в результаті ми використаємо більше пам'яті? Використовуючи інструменти продуктивності Android, ми не виявили жодного збільшення обсягу пам’яті чи завантаження процесора при завантаженні зображень WebP порівняно з їх варіантами PNG на різних пристроях. Подібні результати повідомляє ця стаття на WebP, яка є агностичною для Android.