chore(perf): real-app frame benchmark and deeper grid benchmark metrics (#987) - #988
Merged
Merged
Conversation
…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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Описание изменений
Стенды замеров, на которых основан эпик #987. Код приложения не меняется.
benchmark/app_perf_bench.dartгоняет реальное приложение в profile-режиме через Demo Playground. Данные пишутся во временный каталог (AppDataRoot.mockPortableRootPath), секреты хранятся только в памяти, системный keyring не трогается.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.