Досить це терпіти: програми «товстіють» і гальмують

191

Парадоксально: незважаючи на розвиток технологій і збільшені обсяги пам’яті смартфонів, на сучасний гаджет ви можете встановити додатків менше, ніж кілька років тому. Досить це терпіти! Розбираємося в причинах і шукаємо методи боротьби з роздутими програмами.

Розмір десяти найбільш популярних додатків на iOS за 5 років зріс у 9 разів
Згідно зі статистикою, зібраної компанією Sensor Tower, п’ять років тому набір з 10 найбільш популярних додатків для платформи iOS займав лише 200 МБ. Сьогодні вони ж важать вже більше 1,8 ГБ. Їх апетит виріс в неймовірні дев’ять разів, у той час як мінімальний об’єм внутрішньої пам’яті нових iPhone — всього в чотири рази (з 16 до 64 ГБ). Програми збільшилися по-різному: якщо Spotify «розтовстіла» всього у шість разів, то Snapchat — в рекордні 51. І справа не тільки в гігабайтах. Розрослися додатки починають гальмувати. Чому так відбувається? Є кілька причин.
Причина 1. Метрики і трекінг
Здавалося б, нові функції — це завжди добре. Так і є, коли мова йде про нові можливості для користувачів. Але з кожним днем у додатках з’являється все більше коду, що реалізує сумнівну функціональність. Будь-яка програма для замовлення бургерів відстежує, скільки часу ви провели в тому чи іншому розділі, скільки раз натиснули на певну кнопку, і навіть записує екран під час роботи. За бажання розробників про нас знати всі ми з вами платимо не тільки зниженням приватності і мобільним трафіком, але і скороченням вільного місця в пам’яті смартфона.
Хватит это терпеть: приложения «толстеют» и тормозят Android
Графік часу, проведеного користувачем у різних розділах програми, побудований на основі внутрішніх метрик
Причина 2. Зайві ресурси
З попереднім пунктом тісно пов’язане дублювання ресурсів: у великих фірмах над різними частинами програми працюють різні люди, що використовують одні і ті ж файли для модулів. При підготовці релізних версій про це просто-напросто забувають. Як результат — 40 МБ «надмірної ваги» в клієнті Facebook. Компанія час від часу чистить настановні пакети від сміттєвих файлів, але ця музика буде вічною, а батарейок у них вистачить надовго.
Хватит это терпеть: приложения «толстеют» и тормозят Android
Внутрішня структура програми Facebook у квітні 2017 року із зазначенням дубльованих ресурсів
На подив нераціонально реалізована робота з ресурсами в додатках для iOS: у файли програм (.ipa) потрапляють іконки відразу для всіх пристроїв, починаючи від iPod Touch і закінчуючи iPad Pro. У той же час в Android прийнято додавати лише один набір графіки для всіх апаратів, який потім буде отмасштабирован для різних дозволів і розмірів екранів. Щоб поліпшити ситуацію, Apple пару років тому представила технологію App Thinning — вона гаджетів дозволяє завантажувати лише необхідний набір графіки. Однак описана ситуація нерідко зустрічається і зараз.
Хватит это терпеть: приложения «толстеют» и тормозят Android
Порівняння розмірів універсального додатка для iOS (сірий стовпчик) і програм, зібраних під конкретні пристрої
Причина 3. Неоптимальний код
Існує поширена вираз, відоме в безлічі варіацій: «залізо коштує дешевше часу розробника». На жаль, це дійсно так. Користувач рано чи пізно купить новий смартфон, куди встановлять ще більш потужний процесор і ще більше пам’яті. Так навіщо вкладати зусилля в якість коду, коли «і так схавають»?
Головний бич сучасної розробки прикладного ПО — сторонні повторно використовувані підпрограми і «кістяки» програм (бібліотеки і фреймворки). Само собою, в них як інструменти, що полегшують написання коду, немає нічого поганого. Але нерідко буває, що програма тягне бібліотеку вагою кілька мегабайт заради єдиної функції. А якщо таких функцій і, відповідно, бібліотек багато? Це розробникам для iPhone добре — у них нові релізи iOS приходять разом на всі апарати, що вийшли за останні роки. А в Android актуальних версій системи завжди по кілька штук, і додатки повинні вміти працювати з усім цим зоопарком. Код, що забезпечує сумісність, аж ніяк не додає програмі «легкості».
Хватит это терпеть: приложения «толстеют» и тормозят Android
Діаграма розподілу версій Android на кінець жовтня 2018 року
У світі iOS теж не все гладко: перехід на мову програмування Swift збільшив обсяг тих же програм в три-чотири рази. Винні не лише внутрішні особливості мови (великі типи даних за замовчуванням, збільшений розмір стандартних бібліотек, додаткові тести та перевірки, які потрапляють у фінальну версію). Зіграла злий жарт і лінь розробників, які не хочуть замислюватися про вибір правильних типів даних та інших методах оптимізації.
Хватит это терпеть: приложения «толстеют» и тормозят Android
Порівняння розмірів шаблонних додатків для iOS мовами Swift і Objective-C
Причина 4. Даремні функції
Неприємна тенденція останніх років — поява величезної кількості «велосипедів». Замість стандартних можливостей, що надаються системою, розробники додають такі ж, але власні — наприклад, браузери або фотогалереї. І якщо є налаштування «Відкривати посилання в браузері», то вона захована далеко в меню. А коштує в кожен месенджер вбудувати веб-просмотрщику або камері — і ніякої пам’яті в смартфоні не вистачить.
Хватит это терпеть: приложения «толстеют» и тормозят Android
Ще один популярний тренд: виробники прагнуть зробити з програм комбайни і додають в них нові функції, які чомусь вважають дуже корисними. Користувачі думають інакше: навіщо, скажімо, файловому менеджеру «ES Провідник» диспетчер завдань, аналізатор SD-карти і аудіоплеєр? Або ось бенчмарку AnTuTu: він не тільки отримав цілий набір додаткових тестів, якими майже ніхто не користується, але ще й набридає віджетом в панелі сповіщень, поки не відключили його вручну.
Хватит это терпеть: приложения «толстеют» и тормозят Android
Зліва — «ES Провідник», праворуч — AnTuTu
Причина 5. Зростання вимог до додатків
Стрімкий технічний прогрес. Вже здійснився перехід на 64-бітні чіпсети, а зростання дозволів екранів і не думає зупинятися — кудись потрібно подіти збільшені процесорні потужності? І якщо з переходом на архітектури більшої розрядності розмір програм змінився одноразово і порівняно небагато, то подальше збільшення ppi в смартфонах зробить додатки помітно крупніше. Проблема не виникла б при раціональному використанні ресурсів, але це, як ми вже з’ясували, не завжди буває так.
Хватит это терпеть: приложения «толстеют» и тормозят Android
Всі розміри іконок, необхідні для підтримки iOS-пристроїв
Як приборкати розжиріли додатки
На жаль, ми не в силах змусити розробників писати якісний код і витрачати час на оптимізацію. Однак пара способів збільшити об’єм вільної пам’яті все-таки є.
Перенесення програм на карту пам’яті. Якщо ваш смартфон оснащений спеціальним слотом, ви можете встановити картку microSD і використовувати її для зберігання програм. Процес перенесення додатків в Android не змінювався з незапам’ятних часів. Досить знайти потрібний в налаштуваннях і натиснути кнопку «Перенести на карту пам’яті» або «Змінити місце зберігання» (в залежності від моделі гаджета).
Хватит это терпеть: приложения «толстеют» и тормозят Android
Незважаючи на те, що карти пам’яті бувають досить місткими, у способу є ряд недоліків. Деякі програми в принципі не можуть бути перенесені (за це відповідають їх творці), а якісь після перенесення втрачають частину функціональності або починають працювати нестабільно. Можна обійти обмеження, застосувавши опцію об’єднання внутрішньої і зовнішньої пам’яті, Android, але тоді не вийде використовувати карту в інших пристроях, а її витяг запросто позбавить вас частині встановлених додатків.
Використання веб-версій. Значна частина звичних нам додатків — не більш ніж веб-клієнти сайтів. Сюди відносяться, серед іншого, клієнти соціальних мереж і додатки на зразок YouTube. Зрозуміло, що нативні програми зазвичай мають більшу функціональність. Але якщо ви готові від неї відмовитися (припустимо, вам не потрібні миттєві повідомлення з соцмережі), то браузер стане цілком непоганим варіантом.
Хватит это терпеть: приложения «толстеют» и тормозят Android
Використання полегшених додатків. «Ожиріння» деяких програм вже настільки велике, що власники бюджетних смартфонів просто не можуть ними нормально користуватися — не тільки з-за великого обсягу, але і повільної роботи. Вражаюче, але багато розробники вирішили не оптимізувати існуючі програми, а зробити їх полегшені версії. Спочатку мова йшла тільки про власні ініціативи творців (так з’явилося додаток Facebook Lite), але потім Google представила Android Go — збірку операційної системи для недорогих пристроїв. Крім загальної оптимізації Android Go відкриває Google Play доступ до полегшених версій більш ніж півсотні популярних програм як від самої Google, так і від сторонніх компаній.
Хватит это терпеть: приложения «толстеют» и тормозят Android
Google Maps Go майже не відрізняється від звичайного застосування, але займає в пам’яті смартфона лічені кілобайти і Chrome використовує в якості двигуна