LazyColumn фризит на Redmi и Tecno за 10к, перепробовал всё что гуглится, спасайте
Рейтинг: 52.9% · 8 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
- coder_anton
- Сообщения: 32
- Зарегистрирован: 11 май 2026, 16:50
LazyColumn фризит на Redmi и Tecno за 10к, перепробовал всё что гуглится, спасайте
Приложение на Compose (BOM 2026.04, Kotlin 2.3), лента объявлений с картинками. На Pixel 8 и Samsung A54 всё гладко. Берёшь Redmi 9A или Tecno Spark, на которых сидит половина нашей аудитории (регионы, телефоны до 12к рублей), и скролл превращается в слайдшоу. Frame time скачет 40-80 мс, jank по vitals 14%.
Что уже сделано: ключи и contentType в items, картинки через Coil 3 со строгими размерами, derivedStateOf на скролловом стейте, тяжёлые маппинги унесены с мейна. Прогнал compose compiler reports, нестабильных классов в горячих местах не осталось.
Профилировал через студийный профайлер, рекомпозиций мало, но фреймы всё равно длинные. Куда копать дальше?
Что уже сделано: ключи и contentType в items, картинки через Coil 3 со строгими размерами, derivedStateOf на скролловом стейте, тяжёлые маппинги унесены с мейна. Прогнал compose compiler reports, нестабильных классов в горячих местах не осталось.
Профилировал через студийный профайлер, рекомпозиций мало, но фреймы всё равно длинные. Куда копать дальше?
✔ Лучший ответ сформирован автоматически — lover_denis
@valru, Если release, то дальше по списку. Baseline profiles обязательно: на слабом железе JIT душит первые минуты сессии, профиль плюс macrobenchmark в CI, нам на Galaxy A03 это срезало jank с 16 до 7 процентов. Дальше бери Perfetto вместо студийного профайлера и смотри, где реально уходит время: Choreographer, RenderThread или биндер. И частая засада именно на бюджетниках: декод картинок…
- lover_denis
- Сообщения: 6
- Зарегистрирован: 16 май 2026, 17:31
Re: LazyColumn фризит на Redmi и Tecno за 10к, перепробовал всё что гуглится, спасайте
✔ Лучший ответ — сформирован автоматически
@valru, Если release, то дальше по списку. Baseline profiles обязательно: на слабом железе JIT душит первые минуты сессии, профиль плюс macrobenchmark в CI, нам на Galaxy A03 это срезало jank с 16 до 7 процентов. Дальше бери Perfetto вместо студийного профайлера и смотри, где реально уходит время: Choreographer, RenderThread или биндер.
И частая засада именно на бюджетниках: декод картинок. Слабый CPU, и Coil жуёт jpeg дольше, чем рисуется кадр. Превьюшкам ставь RGB_565, памяти вдвое меньше и декод быстрее, глазом разницу на дешёвой матрице никто не увидит. Плюс проверь overdraw, полупрозрачная подложка на каждом айтеме убивает Mali-G52.
И частая засада именно на бюджетниках: декод картинок. Слабый CPU, и Coil жуёт jpeg дольше, чем рисуется кадр. Превьюшкам ставь RGB_565, памяти вдвое меньше и декод быстрее, глазом разницу на дешёвой матрице никто не увидит. Плюс проверь overdraw, полупрозрачная подложка на каждом айтеме убивает Mali-G52.
Re: LazyColumn фризит на Redmi и Tecno за 10к, перепробовал всё что гуглится, спасайте
Redmi 9A это 2 гига памяти и Helio G25, там и нативный RecyclerView не летает. Глянь сколько процесс жрёт: если за 300 метров, система душит и никакой компоуз не спасёт. Иногда честнее на таких девайсах показать облегчённую ленту без теней и анимаций, чем гнаться за 60 fps, которых железо физически не умеет.
- coder_vlad
- Сообщения: 72
- Зарегистрирован: 11 май 2026, 01:57
Re: LazyColumn фризит на Redmi и Tecno за 10к, перепробовал всё что гуглится, спасайте
У нас была почти такая же картина, и виноват оказался не список. Раз: Modifier.shadow на каждой карточке, на мали и адрено это оффскрин пасс, заменили тень статичной подложкой и минус 12 мс с кадра. Два: таймер в шапке экрана сидел на flow без distinctUntilChanged и перерисовывал ленту целиком дважды в секунду. В перфетто такое видно сразу, в студийном профайлере мы это месяц не замечали.
Re: LazyColumn фризит на Redmi и Tecno за 10к, перепробовал всё что гуглится, спасайте
Добавь в прод JankStats и шли p90 frame time в аналитику вместе с моделью девайса. Мы так собрали топ-5 худших моделей и они автоматом получают упрощённый режим ленты. Иначе так и будешь чинить на пикселе то, что лагает на текно.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость