Skip to content

Bench: throughput gains show as gains, partial totals say so, the chart page names its axis unit, Expand all is on the landing page only, and each filter row's "all" clears only that row - #185

Merged
lwwmanning merged 7 commits into
mainfrom
wm/bench-correct-signals
Nov 4, 2026

Conversation

@lwwmanning

@lwwmanning lwwmanning commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

This PR corrects five signals in bench.

  • The chart tooltip colours a change by the unit of the chart. On a throughput chart, a rise is better. No chart sends throughput today, so no page changes yet.
  • A summary total over fewer queries than the others shows "(partial)", the word the headline uses. "Not measured" is not true for a series with 20 of 22 queries, and the mark keeps the real total.
  • The chart page shows the unit of the axis (ms), not the stored unit (ns), and changes with the axis when the full history loads.
  • "Expand all" and "Collapse all" show only on the landing page.
  • Each "all" chip in a group filter clears only its row. The group store keeps engine and format choices apart from series choices. A group link carries them as hide-engine, hide-format, show-engine, and show-format, so they also apply to charts that load later.

Checks: the bench suite with Postgres, typecheck, Biome, knip, and build.

🤖 Generated with Claude Code

The tooltip marked every rise as worse. On a throughput chart a rise is a
gain, so the delta's colour now follows higherIsBetter(unit_kind), which
the chart page's description also uses.

The chart page printed the stored unit ("unit: ns") over an axis drawn in
the display unit (ms). It now prints the display unit that the chart picks
from the same values.

Signed-off-by: Will Manning <will@willmanning.io>
A series measured in 20 of 22 queries showed a smaller total beside the
complete totals, and only its hover title said why. Its total now reads
"(partial)", the word a group's headline uses, in the query, vector
search, and random access cards.

Signed-off-by: Will Manning <will@willmanning.io>
The chart page, the methodology page, and the loading view have no groups,
so the two buttons did nothing there. The landing page now asks for them
when it has groups.

Signed-off-by: Will Manning <will@willmanning.io>
The Engine, Format, and Series rows all wrote one per-series list, so each
row's "all" chip cleared all three. The group store now keeps the Engine
and Format choices apart from the Series choices, and each "all" chip
clears its own row. A chip shows its own row's choice, so turning a format
off leaves the engine chips on. A permalink still names series: it lists
every series that any row hides.

Signed-off-by: Will Manning <will@willmanning.io>
@vercel

vercel Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
vortex Ready Ready Preview Nov 4, 2026 2:38pm UTC

Request Review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-04T15:14:56.681646Z a49d437 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

🔦 Lighthouse audit

URL Perf A11y Best practices SEO
/ 🟢 100 🟢 100 🟢 100 🟢 100
/bench 🟢 100 🟢 100 🟢 100 🟢 100
/bench/chart/ct.eyJrIjoiQ29tcHJlc3Npb25UaW1lIiwiZGF0YXNldCI6ImFyYWRlIiwiZGF0YXNldF92YXJpYW50IjpudWxsfQ 🟢 100 🟢 100 🟢 100 🟢 100
/blog 🟢 100 🟢 100 🟢 100 🟢 100
/blog/btrblocks-compressor 🟢 100 🟢 100 🟢 100 🟢 100

Run 41849597591 · 2026-11-04 14:41 UTC

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5bf862dfd2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@lwwmanning

lwwmanning commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor Author

Screenshots

The left column is main, which production runs, with the heading change from #188. The screenshots were retaken after this branch merged main, so both columns use the same heading fonts. The right column is this branch. Both read the same local copy of the bench database. Production has no series with a partial total, so in this copy I removed the datafusion:lance results for TPC-H SF1 NVMe queries 21 and 22.

Partial totals, desktop

datafusion:lance has results for 20 of 22 queries. Its total now shows "(partial)".

Before (main) After (this branch)
Light
Dark

Partial totals, phone (375 px)

Before (main) After (this branch)
Light
Dark

Axis unit and Expand all, chart page, desktop

The unit line shows ms, the unit of the axis. Expand all and Collapse all are not on this page.

Before (main) After (this branch)
Light
Dark

Axis unit and Expand all, chart page, phone (375 px)

Before (main) After (this branch)
Light
Dark

Expand all, landing page

The buttons stay on the landing page.

Before (main) After (this branch)
Light
Dark

Expand all, methodology page

Before (main) After (this branch)
Light
Dark

Group filter: datafusion and Parquet off

In the TPC-H (NVMe) (SF=1) group, I turned off the datafusion engine and the Parquet format. In the after column, the engine chips show only the Engine row, so duckdb stays on.

Before (main) After (this branch)
Light
Dark

Group filter: then the Format row's "all"

Before, "all" in the Format row also showed the datafusion series again, but the datafusion chip stayed off. After, it clears only the Format row, and datafusion stays off.

Before (main) After (this branch)
Light
Dark

Tooltip on a time chart

No change here. The tooltip fix applies to throughput charts, and no chart sends throughput today, so no page can show it. This pair shows that time charts still mark a rise as worse.

Before (main) After (this branch)
Light
Dark

…at they describe

An Engine or Format chip now reads only its own row, so the Format row
cannot turn an engine's chip off when every series of that engine has the
hidden format.

A group permalink now carries the Engine and Format rows as `hide-engine`
and `hide-format` parameters, not as the series they hid when the link was
copied. A link copied before every chart loaded now also hides the series of
the charts that load later.

The chart page's unit now follows the y-axis. When the full history loads and
its older values need a larger unit, the meta line changes with the axis.

Signed-off-by: Will Manning <will@willmanning.io>
Signed-off-by: Will Manning <will@willmanning.io>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fd06d10df8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

…ine or format

When an Engine or Format chip turns on a value that the global filter hides,
the group's row now keeps the value in `shownEngines` or `shownFormats`. It
no longer adds the series the chip covers at that moment to the Series row.
So the choice also shows the series of charts that load later, and a group
link carries it as `show-engine` or `show-format`. The row's "all" chip and
the group's Reset clear these lists too.

Signed-off-by: Will Manning <will@willmanning.io>
@lwwmanning

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 👍

Reviewed commit: a49d43705d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@lwwmanning
lwwmanning merged commit 8d890cc into main Nov 4, 2026
22 checks passed
@lwwmanning
lwwmanning deleted the wm/bench-correct-signals branch November 4, 2026 15:15

This branch was successfully deployed

1 active deployment
Preview — a49d4370 Deployed Nov 4, 2026 by vercel[bot]
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.

1 participant