Закрити оголошення

Вже на початку року представники Apple вони стверджували, що нова iOS 12 буде зосереджена в основному на оптимізації, і нам доведеться чекати більш фундаментальних новин до наступного року. Приблизно те ж саме було сказано в понеділковому виступі під час секції про iOS 12. Так, деякі новини дійсно з’являться в майбутній ітерації iOS, але головну роль відіграє оптимізація, яка особливо порадує власників старих машин ( про те, як iOS 12 вдихнула життя в мій iPad Air 1-го покоління ви зможете прочитати вже на цих вихідних). Вчора в рамках програми WWDC відбулася лекція, де більш детально розповіли, що Apple зробила, щоб нова система працювала помітно швидше.

Якщо вам дійсно цікава ця тема і ви хочете дізнатися, як ті чи інші елементи iOS працюють на практиці, рекомендую переглянути запис лекції. Він триває близько 40 хвилин і доступний на офіційному веб-сайті Apple під назвою Сесія 202: Що нового в Cocoa Touch. Якщо ви не хочете витрачати три чверті години на перегляд запису конференції, ви можете прочитати більш стислу стенограму тут, однак, є дещо технічним. Для решти я спробую спрощене резюме нижче.

Перегляньте зображення з презентації iOS 12:

З iOS 12 Apple вирішила зосередитися на оптимізації, оскільки багато користувачів скаржилися на налагодження (особливо у зв'язку з iOS 11). Переважна більшість негативних реакцій стосувалися якоїсь «повільності», «зависання» та «неплавності» системи та її анімації. Тому програмісти Apple заглибились у самі основи та подолали всю систему анімації в iOS. Ці зусилля складалися в основному з трьох основних налаштувань, завдяки яким iOS 12 працює так, як вона працює. Програмістам вдалося виявити недоліки, які були присутні в iOS з iOS 7.

1. Підготовка даних

Перша зміна — це оптимізація так званого Cell Pre-fetch API, який просто подбав про своєрідну підготовку даних до того, як вони дійсно знадобляться системі. Незалежно від того, чи це були зображення, анімація чи інші дані, система повинна була попередньо відтворити необхідні файли в пам’яті за допомогою цього API, щоб вони були доступні під час їх використання, і, таким чином, не було стрибків у навантаженні процесора, які б спричинили вищезгадані проблеми плинності. Як виявилося під час ретельної перевірки цього алгоритму, він працював не зовсім коректно.

В одних випадках він заздалегідь підготував дані, в інших – ні. В інших випадках система завантажувала дані, незважаючи на те, що вони вже були підготовлені в кеші цього API, і іноді відбувалося свого роду «подвійне завантаження». Все це спричиняло падіння FPS під час анімацій, нарізки та інші неузгодженості в роботі системи.

2. Миттєве виконання

Друга зміна — модифікація керування живленням обчислювальних блоків у пристрої, будь то CPU або GPU. У попередніх версіях системи процесору знадобилося помітно більше часу, щоб помітити підвищені вимоги до активності й таким чином збільшити робочі частоти. Крім того, це прискорення/уповільнення процесора відбувалося поступово, тому в багатьох випадках траплялося, що системі потрібне живлення для виконання певного завдання, але воно не було одразу доступним, і знову спостерігалися падіння анімації FPS тощо. Це змінюється в iOS 12, тому що саме тут криву продуктивності процесорів налаштовано значно агресивніше, і поступове збільшення/зниження частот тепер відбувається негайно. Таким чином, продуктивність має бути доступною в моменти, коли вона потрібна.

3. Досконаліша автоверстка

Третя зміна стосується інтерфейсу, який Apple представила в iOS 8. Це так званий фреймворк Auto-layout, який увійшов в iOS в той час, коли Apple почала збільшувати розмір дисплеїв iPhone. Фреймворк забезпечував правильний вигляд інтерфейсу користувача незалежно від типу та розміру дисплея, на якому відображалися дані. Це свого роду милиця, яка допомагає розробникам оптимізувати свої додатки (але не тільки їм, цей фреймворк є невід'ємною частиною системи iOS як такої і піклується про правильне відображення всіх частин інтерфейсу користувача) для декількох розмірів дисплея. Крім того, вся ця система значною мірою автоматизована. При детальному розгляді виявилося, що його робота досить вимоглива до системних ресурсів, і найбільше вплинуло на продуктивність в iOS 11. В iOS 12 вищезгаданий інструмент отримав значний редизайн і оптимізацію, а в поточному вигляді його вплив на роботу системи значно менший, що значною мірою звільняє ресурси в CPU/GPU для потреб інших програм та інструментів.

Як ви бачите, Apple дійсно взяла процеси оптимізації з піку, і це дійсно видно в кінцевому продукті. Якщо у вас минулорічні iPhone або iPad, не очікуйте занадто багато змін. Але якщо у вас є пристрій двох, трьох, чотирьох років, зміни точно будуть більш ніж помітними. Незважаючи на те, що iOS 12 зараз знаходиться на ранніх стадіях, вона вже працює значно краще, ніж будь-яка версія iOS 1 на моєму iPad Air 11-го покоління.

.