Skip to content

perf: asyncpipe regressed 55.6% (1.08x -> 1.62x Node) between 14468dcbc and 1b61941bc #8384

Description

@proggeramlug

Summary

The asyncpipe benchmark regressed +55.6% between the 2026-08-17 and 2026-08-18
four-engine sweeps, moving from 1.08x Node to 1.62x Node. It is the only material
loss in a sweep where every other cell improved and the Perry/Node geomean went
1.076x -> 0.804x.

Evidence that it is real, not noise

This sweep was noisier than the last one on sub-100 ms cells (median Perry-cell spread
15.9%), so the best-of-five delta alone would not carry the claim. The distributions
are disjoint, which noise cannot produce:

sweep five samples (sorted, seconds)
2026-08-17 @ 14468dcbc 0.0833 0.0837 0.0838 0.0840 0.0843
2026-08-18 @ 1b61941bc 0.1296 0.1313 0.1343 0.1512 0.1527

The slowest 08-17 run is still 35% faster than the fastest 08-18 run.

It is also work, not scheduling: asyncpipe retires 1.72 G instructions against
Node's 0.79 G
. Peak RSS is 61.2 MiB (Node 88.0 MiB), so this is not a memory-pressure
story either.

Scope

  • Perry range: 14468dcbc .. 1b61941bc, 102 commits.
  • Corpus source: gc-handoff/apps/asyncpipe.ts, unchanged between the two sweeps.
  • Correctness unaffected — Perry is 19/19 byte-exact against the Node oracle in both sweeps.
  • Porffor cannot compile this benchmark, so there is no third-engine cross-check.

Suggested starting point

asyncpipe is the async/microtask-heaviest cell in the corpus, and it was the row that
gained the most in the 2026-08-14 -> 2026-08-17 window (-92.6%). A bisect over the 102
commits is cheap here: the benchmark runs in ~130 ms and the signal is 55%, far outside
the 1-2% spread the long cells show.

Protocol

Quiet M1 mini under ~/bench.lock, verdict CLEAN (load 1.38 -> 2.08, ceiling 2.5,
foreign processes 0/0). Five deterministic shuffled interleaved repeats after a warm
pass, with exit status and byte-exact output re-checked on every run.

Full sweep: gc-handoff/current-sweep-2026-08-18-RESULTS.md.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions