Skip to content

chore(bench): retire the allocator harness — it has nothing left to measure (#448) - #479

Merged
niko86 merged 2 commits into
mainfrom
chore/retire-allocator-bench
Aug 20, 2026
Merged

niko86 merged 2 commits into
mainfrom
chore/retire-allocator-bench

Conversation

@niko86

@niko86 niko86 commented Aug 20, 2026

Copy link
Copy Markdown
Owner

✅ Based on main — mergeable now. Closes out the #448 measurement arc.

Added deliberately temporary in #476, inventoried in that same change with its
removal keyed to "the PR that records the #448 measurement". This is that PR.

The measurement, now on #448

Two independent runs, both self-hosted runners, 25 MB rung, 15 reps per arm.

Linux (laterite-linux, glibc 2.31)

run v2 v3 system (control) floor verdict
32418268428 300.1 ms +3.3% +36.2% 3.8% indistinguishable
32421189772 300.6 ms +1.8% +35.5% 3.0% indistinguishable

Windows (laterite-windows, Win11 VM)

run v2 v3 system (control) floor verdict
32418268428 413.9 ms −1.7% +62.6% 8.2% indistinguishable
32421189772 393.6 ms +0.4% +53.4% 13.1% indistinguishable

The control separated hard everywhere, so the harness demonstrably resolved
allocator effects at this scale — which is what makes the null result mean
something. Against that, every v2/v3 gap sat inside its own run's noise floor,
and the Windows delta changed sign between runs (−1.7%, then +0.4%). That is
what a null result looks like from the inside.

So narrowing the pin to cfg(target_os = "macos") buys Linux and Windows
nothing measurable
, which inverts the case for doing it: zero measured upside
against platform-divergent allocator behaviour in a fault class that has already
bitten this project (#294, #297, #301).

Why it goes rather than staying "in case"

Kept past its question, a measurement harness becomes a build cost nobody can
justify and nobody dares delete. That is the exact failure mode the reliquary row
was written to prevent — in the same commit that created the thing it was
watching
, which is the only time that discipline is cheap.

The row flips to removed rather than disappearing, so the record of why it
existed outlives the code. Re-deriving it is cheap if a future question needs it:
the method is on #448 and the file is in this history.

What this does not close

#448 stays open on its actual trigger, which has not fired:
libmimalloc-sys 0.1.49 still vendors v3 = 30302 (3.3.2), below the 30404
threshold, and cargo update --dry-run locks 0 packages. The cost half is
simply no longer an open premise.

macOS is untouched by any of this, and pyarrow 25.0.1 being fixed does not
release it — laterite-py/Cargo.toml already gives the reasons: we do not choose
the user's pyarrow, and CPython 3.14 vendors its own v3 regardless of it.

Gates

check_changelog --base origin/main · gen_wiki_tables --check · wiki lint.py
(the reliquary's Verify token check is what confirms a removed row really is
absent from the tree) · reindex.py --check · check_doc_refs --check. Grepped
for dangling references to the removed files — only the reliquary row remains,
which is the point of it.

…easure (#448)

Added deliberately temporary in #476 and inventoried in the same change, with
its removal keyed to "the PR that records the #448 measurement". This is that
PR.

The measurement is recorded on #448. Two independent runs on both self-hosted
runners at the 25 MB rung, 15 reps per arm:

- the system-allocator control separated by 35–36% on Linux and 53–63% on
  Windows, so the harness demonstrably resolved allocator effects at this scale;
- against that, every v2/v3 gap sat inside its own run's noise floor, and the
  Windows delta CHANGED SIGN between runs (-1.7%, then +0.4%).

So narrowing the pin to `cfg(target_os = "macos")` buys Linux and Windows
nothing measurable, which inverts the case for doing it. The cost half of #448
is no longer an open premise; the issue stays open on its actual trigger, which
has not fired — `libmimalloc-sys` 0.1.49 still vendors v3 3.3.2.

The harness goes rather than staying "in case we want it again". Kept past its
question it would be a build cost nobody could justify and nobody would dare
delete — which is the failure mode the reliquary row was written to prevent, in
the same commit that created the thing it was watching. The row flips to
`removed` rather than disappearing, so the record of why it existed outlives the
code.

Re-deriving it is cheap if a future question needs it: the method is on #448 and
the file is in this history.
@codecov

codecov Bot commented Aug 20, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@niko86
niko86 merged commit dc38cd8 into main Aug 20, 2026
20 checks passed
@niko86
niko86 deleted the chore/retire-allocator-bench branch August 20, 2026 22:58
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