Skip to content

[feature] Redesign JMH benchmark dashboards: grouping, search, dark mode - #6654

Open
duncdrum wants to merge 1 commit into
eXist-db:gh-pagesfrom
duncdrum:dp-nicer-bench-ghpages
Open

[feature] Redesign JMH benchmark dashboards: grouping, search, dark mode#6654
duncdrum wants to merge 1 commit into
eXist-db:gh-pagesfrom
duncdrum:dp-nicer-bench-ghpages

Conversation

@duncdrum

@duncdrum duncdrum commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Summary

The default github-action-benchmark template renders one flat, unsorted
chart per benchmark+parameter-set with no navigation and no dark mode.
As more benchmarks were added this became unusable (168 charts on
exist-core-jmh alone). This replaces it with a grouped, searchable
dashboard.

The action only writes index.html when it's missing (addIndexHtmlIfNeeded
in github-action-benchmark's write.ts) — every run after that only
appends to data.js — so these files are safe to hand-maintain going
forward; no workflow change needed.

Before/after screenshots are in the comment below.

What changed

  • dev/bench/style.css, dev/bench/dashboard.js (new) — shared theme
    (light/dark, system-aware + manual toggle) and rendering engine: groups
    charts by class → method (one series per JMH param set instead of one
    chart per combination — exist-core-jmh 168→29 charts,
    exist-indexes-jmh 60→20), sidebar TOC + search/filter, log-scale
    y-axis for wide-spread series, and a per-chart %-change badge
    (direction-aware by unit — see the companion upstream issue below).
    Chart.js 2.9.2 → 4.4.4.
  • dev/bench/core/index.html, dev/bench/indexes/index.html — slimmed
    to shells loading the shared CSS/JS.
  • index.html — restyled root landing page.

CI

The failing Codacy check found 0 issues and analyzed 0 files for
this diff (confirmed via the Codacy API directly) — it's reporting
action_required, which on this repo's Codacy integration means "needs a
maintainer to view the dashboard," not "found a defect." gh-pages has no
branch protection, so this can't block merge either way.

Test plan

  • Verified in a local static server against real data.js from the
    live gh-pages branch — no console errors.
  • Confirmed chart-count reduction (168→29, 60→20) against the actual
    data.
  • Manually exercised search/filter, dark/light toggle (incl. live
    re-theming of already-rendered charts), and log-scale detection.
  • Maintainer review of visual design/density, especially
    ReindexDeleteStrategyBenchmark (up to 20 series per chart).
  • Confirm GitHub Pages redeploys cleanly from this branch.

🤖 Generated with Claude Code

Replace the default github-action-benchmark template (one flat unsorted
chart per benchmark+params, no navigation, light-only) with a grouped
dashboard: charts are combined per class+method with one series per JMH
parameter set, sections are collapsible with a sidebar table of contents,
a search box filters by class/method/param, and each chart shows a
percent-change badge against the previous run (direction-aware: ops/s-style
units treat higher as better, */op units treat lower as better). Also adds
dark mode (system-aware plus manual toggle), a log-scale y-axis for charts
whose series span more than ~15x, and upgrades Chart.js 2.9.2 -> 4.4.4.

exist-core-jmh drops from 168 individual charts to 29 grouped ones;
exist-indexes-jmh from 60 to 20. The default template is only written by
the action when index.html is missing, so these files are safe to
hand-maintain going forward.

Also restyles the root landing page to match.
duncdrum added a commit to duncdrum/exist that referenced this pull request Aug 23, 2026
Temporary review artifacts, not linked from any page. Safe to squash
out or delete before/at merge.
@duncdrum
duncdrum force-pushed the dp-nicer-bench-ghpages branch from 34bdf49 to 6313293 Compare August 23, 2026 16:23
@duncdrum

Copy link
Copy Markdown
Contributor Author

Before / after

Before After
Root before after
exist-core-jmh before after
exist-indexes-jmh before after

Images are hosted from a standalone orphan branch (pr-6654-screenshots,
no shared history with gh-pages) — not part of this PR's diff or commits.

🤖 Generated with Claude Code

@duncdrum

Copy link
Copy Markdown
Contributor Author

just to be clear there is only one commit in this PR, the screens are in a separate throwaway branch in my fork.

@duncdrum
duncdrum marked this pull request as ready for review August 23, 2026 16:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants