Производительность компоновки в Android измеряется во времени, затраченном на стадии measuring (измерения) и layout (расположения) во время прохода компоновки.
Ключевые показатели:
- Время измерения (Measure Time): Время, необходимое для того, чтобы каждый View и ViewGroup определил свой размер.
- Время компоновки (Layout Time): Время, необходимое для того, чтобы каждый View и ViewGroup определил свое положение на экране.
- Количество проходов компоновки (Layout Passes): Сколько раз дерево View должно пройти стадии измерения и компоновки, чтобы достичь стабильного состояния. Часто два прохода (Measure и Layout) считаются оптимальными. Избыточное количество проходов (multi-pass layout) может указывать на неэффективность, особенно при использовании весов во вложенных
LinearLayout.
- Глубина и сложность дерева View: Чем глубже и сложнее иерархия View, тем больше времени требуется для прохождения компоновки.
Инструменты для измерения:
- Layout Inspector: Позволяет визуализировать иерархию View и увидеть время, затраченное на измерение и компоновку для каждого View.
- Systrace: Позволяет просмотреть детальный отчет о выполнении потоков, включая события компоновки UI (
Choreographer#doFrame).
- Android Profiler (CPU Profiler): Позволяет записывать и анализировать трассировки методов, чтобы определить bottlenecks в коде компоновки.
java