Ускорение запуска мобильных приложений в iOS 16
Множество факторов влияют на то, насколько пользователи удовлетворены работой приложений Apple, в частности, скорость загрузки. Какой бы замечательной ни была программа, если приходится ждать её открытия слишком долго, то человек скорее найдет приемлемую замену, чем будет мириться с неудобствами. Проблема в том, что иногда задержки обусловлены не какими-то ошибками разработками, а особенностями функционирования операционной системы. К счастью для создателей программного обеспечения, яблочный бренд постоянно дорабатывает свои ОС, поэтому есть смысл зарегистрировать или купить аккаунт Apple Developer и заниматься созданием утилит. Одним из переломных этапов в истории скоростной оптимизации стала презентация iOS 16, и в этой статье от Nova.Shop вы узнаете об изменениях детальнее.
Предыстория изменения
Еще в рамках проведения WWDC22 яблочная компания анонсировала, что в последней на тот момент версии оперативки для айпадов и айфонов скорость запуска софта будет на порядок выше, в частности, у Airbnb и Lyft производительность вырастет в 2 раза. Оптимизация связана с корректировкой динамического компоновщика, в частности с:
- оперативным выполнением проверок протоколов;
- снижением затрат времени на загрузку двоичных файлов благодаря использованию меньшего количества данных с диска.
Фактически программисты улучшили параметры работы утилиты в ОС, выполняющей запуск софта после нажатия на иконку. Примечательно, что для достижения максимального результата американская компания применила одновременно два подхода: lazy evaluation, eager loading. На первый взгляд может показаться, что доработка несущественная, но это не так. Прямо сейчас расскажем, насколько результативными оказались изменения – эта информация будет ценной для каждого, кто использует Apple Developer console и публикует утилиты в официальном магазине.
Оценка оптимизации протокольных проверок в 16 версии iOS
Процесс проверки соответствия протоколу является обязательным для Swift-утилит, причем проходит в режиме реального времени. Суть заключается в определении соответствия типа и протокола. Если мобильное приложение большое, но сверка параметров длится долго. Дополнительной проблемой является то, что проверка происходит даже в том случае, если пользователь не запускает программу. В результате девелоперы, которые потратили массу усилий на создание софта, получили сертификат Apple и опубликовали его в магазине, сталкиваются с недовольством ЦА и отписками.
Выход эксперты из американской компании увидели в замыкании dyld closure. Теперь у каждой загружаемой утилиты есть отдельный кэш, позволяющий ускорять операции dyld, в частности, помогать программе быстрее загружаться. Применение заранее просчитанных соответствий позволяет не тратить так много времени на запуск. Больше того, если система находит соответствие в кэше, тогда проверка вообще не проводится. Это позволяет устранить пробелы по iOS в масштабных приложениях.
Еще один немаловажный момент, который порадует создателей утилит, это распространение оптимизации протоколов развертываний даже на то программное обеспечение, у которого цель развертывания ниже iOS 16.
Еще одно изменение в iOS 16, о котором должен знать Apple Developer
Параллельно с оптимизацией dyld профессионалы из Apple позаботились о том, чтобы уменьшить количество данных, которые задействуются в момент запуска, ведь перегрузка диска замедляет процессы. Во время первого выполнения фрагмента кода начинается процесс загрузки ядром того фрагмента памяти, который его окружает (page fault). При этом для корректной работы происходит исправление части бинарного кода. В отличие от iOS 15, где коррекция проводилась в момент открытия утилиты, соответственно, нужно было загружать каждое место с ошибками с отдельной страницей, в iOS 16 предусмотрено связывание страниц.
Комбинирование активной загрузки и ленивой оценки в 16 версии iOS позволило существенно повысить производительность приложений. При разработке софта для яблочных устройств сейчас программисты могут не переживать о скорости запуска и рассчитывать на хорошую монетизацию. Естественно, сначала необходимо получить хотя бы базовые навыки девелопера, создать или купить аккаунт iOS, получить доступ к платформе Apple Developer program.
Блог