Выбор ответа Senior Производительность и утечки памяти обновлено

Замеры производительности в debug

Вопрос

Почему замеры плавности Compose-экрана в debug-сборке вводят в заблуждение?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Код без R8, с проверками и без Baseline Profile: Compose там в разы медленнее. Debug-сборка собирается с debuggable=true: ART не применяет часть оптимизаций, включены проверки, код не сжат и не оптимизирован R8, профили не применяются.

Варианты ответа

  1. Debug-сборки быстрее release, потому что R8 добавляет проверки в release
  2. Код без R8, с проверками и без Baseline Profile: Compose там в разы медленнееправильный ответ
  3. В debug отключена часть рекомпозиций, и экран кажется плавнее, чем есть
  4. Debug-сборки нельзя профилировать, поэтому замеры там выходят случайными

Разбор

Debug-сборка собирается с debuggable=true: ART не применяет часть оптимизаций, включены проверки, код не сжат и не оптимизирован R8, профили не применяются. Для Compose разница особенно велика. Замеры делают на release-подобной сборке (benchmark build type, профилируемая сборка profileable) с помощью Macrobenchmark. Рекомпозиция в debug работает, профилировать debug можно, но цифры будут нерелевантны.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.