Skip to content

mbo/hash/measurements: decouple measure/publish; labeled multi-machine README from data bundles - #250

Merged
helly25 merged 2 commits into
mainfrom
hash-measurements-publish
Jul 11, 2026
Merged

mbo/hash/measurements: decouple measure/publish; labeled multi-machine README from data bundles#250
helly25 merged 2 commits into
mainfrom
hash-measurements-publish

Conversation

@helly25

@helly25 helly25 commented Jul 11, 2026

Copy link
Copy Markdown
Owner

Overhauls how measurement results become the README, so results from several machines can be shown from the committed data packages, and so the measurement run no longer dirties the tree (which was silently marking runs non-authoritative).

Decouple measure from publish

  • run_measurements.py now writes only a data bundle - no charts/tables into the tree. So the run stays authoritative and you can do per-compiler / per-machine runs back-to-back.
  • New publish command renders the hash README's perf section from a selected set of committed bundles: one labeled ### block per machine (its charts + curated tables), by cutting and re-appending a marker region. --bundles is the selection.
  • Charts carry the identifier (subtitle: cpu-brand · arch · cores · compiler · sha); each block heading covers both its charts and tables.
  • verify (no args) re-renders every featured bundle from the manifest publish leaves in the README and diffs the committed charts - published figures are provably from committed data.

One measurement, not two

The benchmark emits its README size subset (kReadmeSizes) as readme_sizes in the dataset context, so the curated ~22-row tables are extracted from the single FULL run - no separate fast run, and no second size list to drift (the C++ list is the sole source, emitted into the data and read back). Fast mode stays only as a quick dev loop.

Flat data layout

Bundle filenames already carry the full machine identity, so bundles live flat under data/ (no redundant per-machine subdir).

End-to-end tested locally: run → bundle → publish (multi-machine) → verify all green; markers matched, charts labeled, tables filtered to the 22-size subset.

Workflow: measure on N machines (each commits one bundle), then a single publish --bundles ... renders the whole page.

helly25 added 2 commits July 11, 2026 18:47
…multi-machine README

The measurement run now writes ONLY a data bundle - no committed charts/tables
into the tree - so it stays authoritative and per-compiler/per-machine runs go
back-to-back (fixes the "dirty=True" non-authoritative warning caused by writing
SVGs up front).

A new `publish` command renders the README perf section from a SELECTED set of
committed bundles: one labeled `###` block per machine (its charts + curated
tables), replacing a marker region it cuts and re-appends. Charts carry the
machine identifier as a subtitle (cpu-brand · arch · cores · compiler · sha), and
each block heading covers both charts and tables. `verify` (no args) re-renders
every featured bundle from the manifest publish leaves in the README and diffs
the committed charts.

Single measurement, not two: the benchmark emits its README size subset
(kReadmeSizes) as `readme_sizes` in the dataset context, so the curated ~22-row
tables are EXTRACTED from the one FULL run - no separate fast run, and no second
size list to drift (the C++ list is the sole source, emitted into the data and
read back). Fast mode stays only as a quick dev loop.
The bundle filename already carries the full machine identity
(<slug>_<cores>c_<compiler>_<sha>_<stamp>.tgz), so the per-machine subdirectory
was redundant and only added a level to fight with. Bundles now live flat under
data/; .gitignore/.gitattributes and the docs follow.
@helly25
helly25 requested a review from Fab-Cat July 11, 2026 18:34
@helly25
helly25 merged commit 1417af5 into main Jul 11, 2026
39 checks passed
@helly25
helly25 deleted the hash-measurements-publish branch July 11, 2026 18:54
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.

2 participants