Как отслеживать лишние рекомпозиции? Есть какая-нибудь удобная тулза для этого?

7 ответов

25 просмотров

сам долго искал, но походу пока что ничего нет. Можно попробовать делать снепшот и логгировать всё что он ловит, но это такое себе. Пока только с помощью профайлера по косвенным признакам удаётся отлавливать лишние рекомпозиции.

Мне кажется это невозможно, т.к. "лишняя" рекомпозиция вовсе не лишняя, просто так написан код🤷‍♂ Со временем шишки будут набиты и это станет всё очевидным, как например "ничего не делать в onBind или onDraw"

Кирилл-Романенко Автор вопроса
Dmitry
Мне кажется это невозможно, т.к. "лишняя" рекомпоз...

Естественно, "лишний" это субъективное понятие. Но было бы неплохо иметь инструмент, помогающий отслеживать какие именно блоки рекомпозируются. Тогда можно будет вручную искать вот эти "лишние" рекомпозиции.

Кирилл Романенко
Естественно, "лишний" это субъективное понятие. Но...

Не ну если прям очень надо, можно в каждую функцию запихнуть по счётчику и смотреть.

https://github.com/chrisbanes/tivi/blob/main/common-ui-compose/src/main/java/app/tivi/common/compose/Debug.kt

Dmitry
Мне кажется это невозможно, т.к. "лишняя" рекомпоз...

>т.к. "лишняя" рекомпозиция вовсе не лишняя, просто так написан код Оно иногда совсем не очевидно, у меня например вот такой кусок кода был и из-за него лэзилист рекомпозился по 5-10 раз в секунду, gc с ума сходил. Вроде ничего не мутируется там, но почему-то лэзилисту это не нравилось очень

Dmitry Fabrichny
screenshot >т.к. "лишняя" рекомпозиция вовсе не лишняя, прост...

Это совсем неочевидный код, с которым можно было поднасрать везде. Не отменяет необходимости в тулинге для работы с композицией, но тут явно беда не в "неочевидности" рекомпозиции.

Похожие вопросы

Обсуждают сегодня

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта