Skip to content

Measure every comparison figure again with Tinybench and Hyperfine on Node 26.13.0 and Bun 1.4.4 - #58

Merged
bompus merged 34 commits into
mainfrom
release/1.0.4-measure
Nov 1, 2026
Merged

bompus merged 34 commits into
mainfrom
release/1.0.4-measure

Conversation

@bompus

@bompus bompus commented Nov 1, 2026 •

Copy link
Copy Markdown
Owner

Sigflint signs an S3 GET in 0.99 µs on Node 26.13.0, 3.5 times as fast as the next fastest library (lean-s3, 3.44 µs); on Bun 1.4.4 it takes 0.65 µs, 2.9 times as fast as lean-s3. Across the two runtimes the other libraries take 2.0 to 87 times as long on the requests they sign correctly. The code under test is unchanged since 1.0.2 (src/ tree 90a032d5, same built-file hashes). The README had said aws4 was the fastest other library; since the four S3 clients joined the comparison, lean-s3 is, so the headline claim changes.

What this changes:

  • New figures, one method. Speed, other-service, memory, import and size figures are measured again for all twelve arms with Tinybench (signing) and Hyperfine (cold starts) in one admitted campaign. They are not comparable with earlier releases' hand-written-timer figures; the docs and changelog say so.
  • Plan and data. bench/protocol-release-1.0.4.md is the plan declared before the run (two rounds, a count chosen to keep it short), with the stopped plans' rows kept apart. The 66-unit first pass admitted every unit; the extension decision (bench/results/release-1.0.4-extension-decisions.json) added rounds 3 to 5 of memory and import for the comparisons two rounds left unsettled. 38 of its 39 units were admitted; round 4 of the s3-lite-client memory unit used its four attempts and stays a recorded gap (that arm has four rounds).
  • Unsettled results are reported as such. At the five-round cap 60 of 62 retained-heap, 16 of 20 peak-RSS and 14 of 20 import-plus-first-signature comparisons are unsettled and shown as no clear change. Speed gaps (3 to 90 times against bands of 3 to 11%) did not need an extension. The part R regression comparison is not rerun because the code is identical.
  • Generated files (docs/tables.md, the SVG charts, the memory block of docs/benchmarks.md) come from bench/make-assets.mjs and bench/make-memory-assets.mjs; the prose, README and changelog were edited by hand and checked against the saved results. The Deno table is unchanged and now says it used the earlier timer.
  • Code. test/benchmark-analysis.test.js accepts a release directory without a regression file; bench/make-memory-assets.mjs names Node 26.13.0; bench/run-campaign.sh, tidy-results.mjs and the analyzers carry the 1.0.4 plan's fixes (already described in the plan).

Checks: npm run check passes (96 tests). The measured units each passed a fresh 10 s admission window before and after, plus the continuous unit observer. Deviation recorded in the plan: the campaign controller retried a refused admission every 15 s instead of the declared 60 s.

Not in this PR: the version bump, tag, publish and announcement (held for the owner's go). No local review pass was run on this PR; the private reviewer reviews it.

Update after the first review round: the committed admission receipts have the home directory replaced by ~ and the checkout by ; the memory-table text now qualifies the allocation range and the s3mini note; the protocol records three harness limits found in review (left unfixed so the measured code stays as frozen) and a fresh-directory reproduction. The freeze record was rewritten for the final protocol text; no measured code changed.

bompus added 22 commits October 31, 2026 15:40
…et a part continue past a unit out of attempts
…out, check the matrix is whole, admit the calibration, add the campaign controller; part B analysis reports rounds, range and settled, and works without part R
…ze.mjs; empty or short Hyperfine reports and units with no rows are failures; tidy the raw files at the end of a campaign
…shorter windows, one admission window per unit), extend only unsettled comparisons; the stopped first plan's rows kept apart
…ows, one admission window per unit; analyzers use a true median and the A/A gap, reused checks are timed from the window's end, receipt and tidy failures fail, too-few-chunks is not admitted; the freeze ignores analysis files
…d, the host rules require it); two rounds declared as an owner-requested count
… and the analyzer inputs placed at the fixed paths
…es from the new results; analysis test accepts a release without a regression part
@bompus bompus added the author:anthropic Pull request written by a anthropic model label Nov 1, 2026

@bompus-ai-review bompus-ai-review 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.

Bompus AI Review (GPT-6.1 Terra, max reasoning): 8 finding(s).

Comment thread docs/benchmarks.md Resolved
Comment thread docs/benchmarks.md Resolved
Comment thread bench/run-campaign.sh Resolved
Comment thread bench/run-admitted.sh Resolved
Comment thread bench/check-freeze.mjs Resolved
Comment thread bench/protocol-release-1.0.4.md Resolved
Comment thread bench/run-campaign.sh Resolved

@bompus-ai-review bompus-ai-review 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.

Bompus AI Review (GPT-6.1 Terra, max reasoning): 9 finding(s).

  • bench/make-assets.mjs:824 medium: Use the analyzer's unsettled verdict in speed charts

medium: Use the analyzer's unsettled verdict in speed charts

analyze-more.mjs now records "settled: !unsettled", including when a library has fewer than two rounds, but the chart decides whether to show "no clear change" solely from the rounded multiplier and band.

Failure: If one of a library's two units exhausts its attempts, a remaining 3× sample is marked unsettled by the analyzer but rendered as an unqualified 3× result in a chart claiming two processes per library.

Suggested fix: Render the saved settled verdict and round count; apply the corresponding clear verdict to the S3 speed chart as well.

Comment thread docs/benchmarks.md Resolved
Comment thread docs/benchmarks.md Resolved
Comment thread bench/protocol-release-1.0.4.md Resolved
Comment thread bench/make-memory-assets.mjs Resolved
Comment thread bench/run-campaign.sh Resolved
Comment thread bench/analyze-more.mjs Resolved
Comment thread docs/benchmarks.md Resolved
…mary, scrub cgroup paths, qualify process peaks, fresh-directory reproduction, cohort pointer, baseline-less regression cell, chart verdict from the analyzer
…group paths; qualify process peaks; fresh-directory reproduction; cohort pointer; baseline-less regression cell; chart verdict from the analyzer
@bompus

bompus commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

Re the summary finding on the speed charts: the other-service chart now takes its 'no clear change' mark from the analyzer's settled verdict (fixed in this push). The S3 speed chart is unchanged: every cell of that part has both rounds in this run (n=2 for all 12 arms), so the analyzer's verdict and the chart agree; a missing-unit case would need the same guard, which goes in the later harness change.

@bompus-ai-review bompus-ai-review 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.

Bompus AI Review (GPT-6.1 Terra, max reasoning): 1 finding(s).

Review 3: only high findings and above are posted from here on.

Comment thread bench/run-admitted.sh Resolved

@bompus-ai-review bompus-ai-review 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.

Bompus AI Review (GPT-6.1 Terra, max reasoning): 1 finding(s).

Review 4: only high findings and above are posted from here on.

Comment thread bench/tidy-results.mjs Resolved

@bompus-ai-review bompus-ai-review 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.

Bompus AI Review (GPT-6.1 Terra, max reasoning): 0 finding(s).

Review 5: only high findings and above are posted from here on.

@bompus
bompus merged commit 16cea08 into main Nov 1, 2026
7 checks passed
@bompus
bompus deleted the release/1.0.4-measure branch November 1, 2026 06:29
bompus added a commit that referenced this pull request Nov 1, 2026
… contradict (#59)

* Docs: correct statements the review of #58 found stale or too strong (measured clients, rounds, multipliers, earlier experiments, exit codes, README endpoints)

* Docs: separate the driver's exit 9 from the campaign's status

* Docs: per-chart round counts, the ncc legend's twice-band condition, and the scope of the campaign's gap line
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author:anthropic Pull request written by a anthropic model

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant