Выбор ответа Senior Производительность и утечки памяти обновлено
Замеры производительности в debug
Вопрос
Почему замеры плавности Compose-экрана в debug-сборке вводят в заблуждение?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Код без R8, с проверками и без Baseline Profile: Compose там в разы медленнее. Debug-сборка собирается с debuggable=true: ART не применяет часть оптимизаций, включены проверки, код не сжат и не оптимизирован R8, профили не применяются.
Варианты ответа
- Debug-сборки быстрее release, потому что R8 добавляет проверки в release
- Код без R8, с проверками и без Baseline Profile: Compose там в разы медленнееправильный ответ
- В debug отключена часть рекомпозиций, и экран кажется плавнее, чем есть
- Debug-сборки нельзя профилировать, поэтому замеры там выходят случайными
Разбор
Debug-сборка собирается с debuggable=true: ART не применяет часть оптимизаций, включены проверки, код не сжат и не оптимизирован R8, профили не применяются. Для Compose разница особенно велика. Замеры делают на release-подобной сборке (benchmark build type, профилируемая сборка profileable) с помощью Macrobenchmark. Рекомпозиция в debug работает, профилировать debug можно, но цифры будут нерелевантны.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.