Skip to content

ci(bench): ERD, charts/groupings and multi-tab SQL scenarios in the app benchmark (#1173) - #1255

Merged
ZhuchkaTriplesix merged 1 commit into
devfrom
ci/1173-app-bench-scenarios
Oct 9, 2026
Merged

ZhuchkaTriplesix merged 1 commit into
devfrom
ci/1173-app-bench-scenarios

Conversation

@ZhuchkaTriplesix

Copy link
Copy Markdown
Member

Closes #1173

Stacked on #1254 (#1132): both change the benchmark workflow and the CI step that tests its scripts. Merge #1254 first; this diff then shrinks to its own commit.

Scenarios (benchmark/app_perf_bench.dart, Demo Playground, no database server)

  • charts_5000, groupings_5000: Charts (Line, Pie, Bar) and Groupings over the 5 000 rows of the heavy query.
  • multi_tab_run: five tabs hold results, and a query runs in one of them. The bench prints how many query panes the run rebuilt (paneBuildCount).
  • erd_open_200, erd_hover, erd_drag, erd_auto_layout: a 200-table schema joined by foreign keys, created in the playground through the SQL editor. The scenarios open the Diagram, hover across it for 3 s, drag a card for 2 s, and run Auto layout.

CI

  • benchmark.yml gets an App scenarios performance job. It runs only these scenarios (ONLY=...) under xvfb and writes the report to the job summary. Informational and continue-on-error, like the grid bench. It also runs on changes to lib/features/erd/** and lib/features/results/**.
  • scripts/ci/app_bench_report.py reports build p50/p90/max, raster p50 and stutters per scenario. Build p90 is checked against a per-scenario limit: 16.7 ms for charts, groupings, the tab run and the drag; 8.3 ms for hover; 50 ms for opening and laying out the diagram. The report also checks that the tab run rebuilds at most one pane. A missing scenario counts as over.
  • scripts/ci/test_app_bench_report.py (8 cases) runs in the CI analyze job. It passes locally.

The issue mentions 50 and 200 tables; this measures 200, the harder case.

…pp benchmark (#1173)

Scenarios in benchmark/app_perf_bench.dart, on the Demo Playground:
- charts_5000, groupings_5000: Charts (line, pie, bar) and Groupings over
  the 5 000 rows of the heavy query.
- multi_tab_run: a run in one of five tabs holding results, with the
  number of query panes it rebuilt.
- erd_open_200, erd_hover, erd_drag, erd_auto_layout: a 200-table schema
  joined by foreign keys, created in the playground through the editor.

A Benchmark job runs them under xvfb, and scripts/ci/app_bench_report.py
reports build p50/p90/max, raster and stutters per scenario against its
limit, plus the pane count. Unit tests for the report run in CI.
@github-actions github-actions Bot added performance Theme parser epic label: performance tests Theme parser epic P3 Low priority / Polish & Enhancements labels Oct 9, 2026
@ZhuchkaTriplesix
ZhuchkaTriplesix merged commit e611bd4 into dev Oct 9, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P3 Low priority / Polish & Enhancements performance Theme parser epic label: performance tests Theme parser epic

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant