FrameHUD

FrameHUD и другие инструменты Android

English · Русский

FrameHUD нужен для первого разбора: открыть экран и сразу увидеть jank, p95 и медленную стадию кадра. Остальные инструменты отвечают на другие вопросы: подтверждают регрессию, находят точную причину или показывают масштаб проблемы после релиза.

Что использовать и когда

Инструмент Когда полезен
FrameHUD Ручная разработка и QA. Показывает FPS, jank, перцентили и стадии кадра прямо поверх приложения.
JankStats Нужен собственный сбор per-frame данных. Даёт длительность, признак jank и состояние UI; хранение и агрегацию приложение делает само.
Macrobenchmark Проверка регрессий на CI. Повторяет сценарий в близкой к release сборке и выдаёт P50/P90/P95/P99, overrun и trace каждой итерации.
Perfetto Точный разбор плохого кадра. Показывает потоки, scheduler, Binder, GC, RenderThread, GPU и SurfaceFlinger на одной временной шкале.
Play Vitals Статистика после релиза: slow и frozen frames, перцентили и затронутые сессии на реальных устройствах.

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

JankStats ближе всего к FrameHUD: на API 24+ оба используют FrameMetrics. Разница в готовности. JankStats отдаёт события каждого кадра, а FrameHUD сразу собирает из них панель, статистику экрана и сессии, события и jank gate для instrumentation-тестов. framehud-metrics убирает панель и оставляет всё остальное. Это самый близкий к JankStats вариант FrameHUD.

Почему цифры не обязаны совпадать

Поэтому P95 из FrameHUD не стоит напрямую сравнивать с P95 из Macrobenchmark. Надёжнее смотреть, как одна метрика меняется в одном инструменте при одинаковых условиях.

Как они работают вместе

  1. FrameHUD быстро показывает проблему и подозрительную стадию.
  2. Macrobenchmark подтверждает регрессию на повторяемом сценарии.
  3. Perfetto находит конкретную причину; записанный trace уже несёт экраны и метки FrameHUD как секции framehud:* — рядом с его собственными счётчиками и теми, что вело приложение. И кольцевой trace не нужно останавливать руками в нужный момент: инцидент сам просит его сохранить секунды вокруг себя.
  4. Play Vitals показывает, затрагивает ли проблема пользователей.

JankStats стоит отдельно: он нужен, если приложение собирает собственную performance-телеметрию.

FrameHUD не изобретает тайминги: большую часть отдаёт Android через FrameMetrics, а FrameHUD кладёт их туда, куда вы и так смотрите во время работы. Для точного benchmark, системного расследования и production-статистики остаются отдельные инструменты.