Вы стали тем, что поклялись уничтожить

Производительность в React Native — огромная проблема для большинства компаний, работающих над React Native, и моя компания ничем не отличалась. Итак, чтобы дать вам контекст, моя компания в настоящее время работает над переносом приложения с нативного на нативное с реакцией, что само по себе является очень сложной задачей, просто вишенкой на вершине. Большинство наших пользователей используют недорогие устройства, которые просто добавляют к наша проблема, из-за которой мы должны провести много исследований и разработок и попытаться достичь уровня производительности, при котором наше приложение работает аналогично или близко к нативному.
Кулак и общие проблемы, с которыми мы столкнулись
Первой и наиболее распространенной проблемой, с которой мы столкнулись, были чрезмерные повторные рендеры, которые происходили из-за ненужных изменений состояния или изменений ссылок. Таким образом, мы перешли к состоянию, когда мы начали использовать методы, предоставляемые react, такие как useMemo, useCallback, memo и т. д., что означает все то, что было предоставлено react.
Удалось ли нам добиться того, чего мы хотели?
Да, мы смогли достичь того, чего хотели, по большей части, что означает, что мы смогли сэкономить повторные рендеры, но достижение производительности — это еще одна вещь, которую мы все еще не смогли достичь.
Почему?
Таким образом, каждая проверка и каждый рендер имеют свой собственный набор запасных вариантов и накладных расходов, о которых мы забыли подумать. Поэтому, когда мы завернули все во все эти методы, он добавил дополнительную проверку ко всем методам, состояниям и компонентам, что приводит к медленной загрузке и медленным обновлениям, потому что нужно проверять множество вещей, прежде чем даже начать рендеринг.
Еда на вынос
Любой метод оптимизации имеет свою стоимость, и перед использованием этих методов мы должны внести любые другие изменения, которые могут помочь, например, лучшее управление состоянием. А также используйте эти методы с умом, так как это может замедлить ваше приложение, а не ускорить его.