[feature] Redesign JMH benchmark dashboards: grouping, search, dark mode - #6654
Open
duncdrum wants to merge 1 commit into
Open
[feature] Redesign JMH benchmark dashboards: grouping, search, dark mode#6654duncdrum wants to merge 1 commit into
duncdrum wants to merge 1 commit into
Conversation
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
force-pushed
the
dp-nicer-bench-ghpages
branch
from
August 23, 2026 16:23
34bdf49 to
6313293
Compare
Contributor
Author
Before / after
Images are hosted from a standalone orphan branch ( 🤖 Generated with Claude Code |
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
marked this pull request as ready for review
August 23, 2026 16:33
dizzzz
approved these changes
Aug 24, 2026
reinhapa
approved these changes
Aug 24, 2026
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.






Summary
The default
github-action-benchmarktemplate renders one flat, unsortedchart per benchmark+parameter-set with no navigation and no dark mode.
As more benchmarks were added this became unusable (168 charts on
exist-core-jmhalone). This replaces it with a grouped, searchabledashboard.
The action only writes
index.htmlwhen it's missing (addIndexHtmlIfNeededin
github-action-benchmark'swrite.ts) — every run after that onlyappends to
data.js— so these files are safe to hand-maintain goingforward; 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-jmh168→29 charts,exist-indexes-jmh60→20), sidebar TOC + search/filter, log-scaley-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— slimmedto 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 amaintainer to view the dashboard," not "found a defect."
gh-pageshas nobranch protection, so this can't block merge either way.
Test plan
data.jsfrom thelive
gh-pagesbranch — no console errors.data.
re-theming of already-rendered charts), and log-scale detection.
ReindexDeleteStrategyBenchmark(up to 20 series per chart).🤖 Generated with Claude Code