навигация между экранами, загрузка экрана и всё такое. Самый обычный экран - на mount грузятся данные с сервера, потом dispatch, дальше redux подхватывает и отрисовывается экран. На всемя загрузки кручу спиннер.
Тормозит только на Android-е. И в debug, и в release конфигурациях. При этом если включаю debug в dev tools - работает быстро. То есть на мощностях ноутбука всё ок, только мощности эмулятора/девайса не вывозят.
Грешил на движок JS - попробовал отключать Гермес, но результата нет, всё так же тормозит.
Трассирую - загрузка с сервака работает быстро - 1-1,5 секунды. Самое долгое - dispatch результата - ~5 секунд. Проверяю рендеры экрана - 10-12 раз. Срезал до 2-х раз - всё равно тормоза.
Systrace ничего не показывает, FPS не сильно проседает, JS и UI умещаются во фреймы, да и визуально не заметны дропы фреймов.
В фоне сложных процессов вроде нет, есть соккеты - их отключение тоже не помогает.
Куда ещё можно копнуть?
Можно запустить профайлер в Chrome. Да это дебаг билд будет, но общее представление получите. И мой совет - не смотрите на искусственные метрики которые там ФБ навставляли, смотрите не голый JS
Мне кажется тут вряд-ли что-то сделаешь. React Native приложение на андроиде в принципе тормозит. Даже если банально взять react-navigation, накидать несколько экранов и приложение будет явно медленее работать чем на айосе. Особенно если говорить про 5-6 андроиды..
Обсуждают сегодня