Skip to content

chore(perf): real-app frame benchmark and deeper grid benchmark metrics (#987) - #988

Merged
ZhuchkaTriplesix merged 1 commit into
devfrom
perf/120hz-investigation
Sep 25, 2026
Merged

ZhuchkaTriplesix merged 1 commit into
devfrom
perf/120hz-investigation

Conversation

@ZhuchkaTriplesix

Copy link
Copy Markdown
Member

Описание изменений

Стенды замеров, на которых основан эпик #987. Код приложения не меняется.

  • benchmark/app_perf_bench.dart гоняет реальное приложение в profile-режиме через Demo Playground. Данные пишутся во временный каталог (AppDataRoot.mockPortableRootPath), секреты хранятся только в памяти, системный keyring не трогается.
    • Сценарии: простой, сайдбар, запрос на 5000 строк, вертикальный и горизонтальный скролл сетки, наведение, набор текста, вкладки, дерево с 1500 таблицами (раскрытие, скролл, сворачивание).
    • Метрики: FrameTiming, интервалы реально выведенных кадров по растровому потоку (PRESENT), а с PROFILE=true ещё CPU-профиль, аллокации по классам и timeline движка по сценарию. ONLY= запускает выбранные сценарии, STREAMS= выбирает стримы timeline, CALLERS= показывает вызывающих для заданной функции.
  • benchmark/grid_perf_bench.dart: новые режимы rerun (новый набор данных каждые 400 мс) и dialog, метрика рывков по интервалам кадров, разбивка timeline движка.

Запуск: flutter run --profile -d linux -t benchmark/app_perf_bench.dart [--dart-define=PROFILE=true].

Важные оговорки описаны в эпике: запись стрима Dart сама создаёт мусор во фреймворке, клиент VM-service внутри процесса тратит CPU, а FrameTiming.buildDuration не включает flushSemantics.

Относится к #987.

…cs (#987)

Add benchmark/app_perf_bench.dart, which drives the real shell through the
Demo Playground in profile mode with a throwaway data directory and in-memory
connection secrets. Scenarios cover idle, sidebar toggle, running a 5000-row
query, grid scroll and hover, typing, tab switching and a 1500-table
connections tree. Each reports FrameTiming, presented-frame intervals from the
raster timeline and, with PROFILE=true, CPU samples, per-class allocations and
engine timeline totals.

grid_perf_bench.dart gains rerun and dialog modes, a presented-frame / stutter
metric and an engine timeline breakdown.
@github-actions github-actions Bot added epic Epic / umbrella issue performance Theme parser epic label: performance labels Sep 25, 2026
@ZhuchkaTriplesix
ZhuchkaTriplesix merged commit 7700a55 into dev Sep 25, 2026
4 checks passed
@ZhuchkaTriplesix
ZhuchkaTriplesix deleted the perf/120hz-investigation branch September 28, 2026 08:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

epic Epic / umbrella issue performance Theme parser epic label: performance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant