Skip to content

perf: four benchmarks remain 1.4-2.2x Node with no owning issue (pipeline, churn, tree_wide, cycles) #8289

Closed

Description

@proggeramlug

The 2026-08-17 four-engine sweep leaves four rows where Perry is meaningfully behind Node and no issue owns them. interp/iso_miss are #8202 and fib40 is #8175; these are the remainder.

benchmark Perry Node P/Node Perry instr Node instr
pipeline 0.2043 0.0950 2.15× 3.893 B 1.220 B
churn 0.3300 0.1666 1.98× 5.006 B 2.681 B
tree_wide 1.2965 0.9015 1.44× 26.808 B 20.262 B
cycles 0.1035 0.0736 1.41× 2.132 B 0.669 B

All four are instruction-bound rather than scheduling-bound — Perry executes 1.3–3.2× the instructions Node does — so the work is to emit less, not to schedule better.

Notes per row, from the sweep:

Not a regression report — all four improved or held since 08-15 (tree_wide −24.8%, cycles +1.4%, pipeline +2.0%, churn +8.2% from #8288). Filed so the remaining engine gap is tracked rather than implicit, now that the campaign has cleared the catastrophic rows.

Suggested order: #8288 first (it contaminates churn), then cycles as the cheapest probe into where the extra instructions come from, then pipeline.

Sweep evidence: gc-handoff/current-sweep-2026-08-17/ (RESULTS.md, results-clean.json, report.html).

Activity

  1. added
    performanceRuntime, compile-time, build-size, or memory performance
    on Aug 17, 2026
  2. proggeramlug commented on Aug 17, 2026

    @proggeramlug
    ContributorAuthor

    Progress: #8301 has merged. On the checked-in cycles reproducer, memoizing typed layouts by immutable ShapeId reduced the five-run median from 2.177B to 1.804B retired instructions (-17.1%) with unchanged output.

    Keeping this umbrella issue open: pipeline, churn, and tree_wide remain, and cycles still needs a clean four-engine re-sweep to establish its new wall-time and Node ratios.

  3. proggeramlug commented on Aug 18, 2026

    @proggeramlug
    ContributorAuthor

    Progress: #8351 has merged. On the checked-in pipeline reproducer, the four-entry polymorphic closure-dispatch cache reduced the seven-run median from 3.526B to 3.412B retired instructions (-3.23%) with unchanged output.

    Keeping this umbrella issue open: churn and tree_wide still have no merged owning fix, and cycles still needs the clean four-engine re-sweep noted above.

  4. proggeramlug commented on Aug 18, 2026

    @proggeramlug
    ContributorAuthor

    All four rows are now within 1.3x of Node — closing

    Re-measured on the 2026-08-18 four-engine sweep at 1b61941bc (102 commits past the
    14468dcbc sweep this issue was filed against). Same corpus, same protocol, verdict CLEAN.

    row when filed 2026-08-17 2026-08-18 Perry seconds
    pipeline 2.15x 2.15x 1.27x 0.2043 -> 0.1222 (-40.2%)
    churn 1.98x 1.98x 1.18x 0.3300 -> 0.1989 (-39.7%)
    tree_wide 1.44x 1.44x 0.46x 1.2965 -> 0.4189 (-67.7%)
    cycles 1.41x 1.41x 1.04x 0.1035 -> 0.0790 (-23.6%)

    tree_wide no longer just clears the bar, it beats Node outright — and does it on
    60.6 MiB peak RSS against Node's 641.9 MiB, retiring 7.61 G instructions against 20.28 G.

    Sweep-wide, this moved Perry past Node overall for the first time: geomean Perry/Node
    0.804x
    (was 1.076x), 12/19 cells beating Node, 16/19 within 1.3x.

    The four rows named here no longer need an owning issue. The one cell that went the
    other way in this window is asyncpipe (+55.6%), which is tracked separately as #8384
    rather than folded in here, since it is a regression rather than an unclosed gap.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    performanceRuntime, compile-time, build-size, or memory performance

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions