Ответ вслух Middle Производительность и холодный старт спрашивают часто обновлено

Как вы ускорите холодный старт мобильного приложения

Вопрос

Холодный старт приложения 4 секунды. Расскажите план ускорения.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Сначала измеряю на слабом устройстве релизную сборку и смотрю поле: Android vitals, MetricKit, свою метрику времени до контента. Разбиваю старт на фазы: создание процесса, инициализация приложения, первый экран, первый полезный контент.

Что должно прозвучать в ответе

  • Измерить на слабом устройстве и в поле, разделить фазы старта

  • Убрать синхронную работу до первого кадра, SDK лениво

  • Первый экран из кеша, сеть асинхронно

  • Платформенные приёмы: Baseline Profiles, статическая линковка

  • Упростить первый экран, отложить второстепенное

  • Закрепить: метрика в CI и алерты на регрессию

Что могут спросить следом

  • Как понять, что именно тормозит в первые 500 мс?
  • Какую цель по времени вы бы поставили?

Разбор

Сначала измеряю на слабом устройстве релизную сборку и смотрю поле: Android vitals, MetricKit, свою метрику времени до контента. Разбиваю старт на фазы: создание процесса, инициализация приложения, первый экран, первый полезный контент. Обычно больше всего съедает инициализация: десяток SDK, миграции базы, синхронное чтение настроек, иногда сетевой запрос до показа UI. Всё, что не нужно первому экрану, переношу на после первого кадра или делаю лениво. Первый экран показываю из кеша, свежие данные подтягиваю фоном. Из платформенного: Baseline Profiles на Android, на iOS меньше динамических библиотек. Результат закрепляю тестом производительности на CI и алертами, иначе через пару релизов всё вернётся.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.