Оптимизация старта iOS приложенийКоманда
Sentry и
Emerge Tools (
создают топовые инструменты для оптимизации перфоманса мобильных приложений) выпустили open source пакет
FaultOrderingЭтот продукт позволяет автоматизировать технику
Order FilesКогда приложение запускается на iOS, система загружает его код из binary-файла в оперативную память постранично, блоками по 16 КБ. Даже если используется небольшая часть страницы, вся страница целиком подгружается в память (это называется page fault).
Если при запуске важные символы (методы и классы) разбросаны по binary-файлу, возникает большое число page faults, что замедляет запуск. Техника Order Files решает эту проблему, группируя вместе символы, необходимые на старте, чтобы минимизировать число страниц памяти, которые нужно загрузить.
Технически для использования Order Files нужно создать текстовый файл, в котором будет описан порядок загрузки символов. Но здесь и кроется сложность - как сделать это оптимально.
FaultOrdering автоматически отслеживает вызовы функций и классов, необходимых для запуска приложения. Для этого:
1️⃣ В приложение динамически добавляются breakpoints на каждую функцию.
2️⃣ Приложение запускается в тестовом режиме (обычно через XCUITest).
3️⃣ Минималистичный встроенный дебаггер (SimpleDebugger) фиксирует срабатывание этих breakpoints.
Это позволяет собрать точные данные о том, какие функции вызываются при старте, без необходимости изменения кода или сборки приложения.
В результате приложения запускаются быстрее без изменений кода. Airbnb, Snapchat и Spotify уже используют Order Files и ускоряют запуск своих приложений на 20% и больше.
📈 В React Native приложениях Order Files даст заметную пользу, если приложение содержит много нативного кода или кастомных модулей, активно задействованных при старте
React Native World |
Навигация по каналу