Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.

bench(integrated-benchmark): replace 26-snapshot fixture with 1352-snapshot one#262

Merged
zkochan merged 2 commits into
mainfrom
bench/large-fixture
Apr 24, 2026
Merged

bench(integrated-benchmark): replace 26-snapshot fixture with 1352-snapshot one#262
zkochan merged 2 commits into
mainfrom
bench/large-fixture

Conversation

@zkochan

@zkochan zkochan commented Apr 24, 2026

Copy link
Copy Markdown
Member

Summary

The current `alotta-modules` fixture has 7 direct deps and 26 snapshots — a frozen-lockfile install runs in ~50 ms, so wall-time is dominated by per-process overhead (binary startup, lockfile parse) rather than the install pipeline. Scaling wins — shared SQLite connections (#261), import-method changes, symlink-pass parallelism — don't show up because the work they optimize barely exists at this size.

Swap in a 1352-snapshot lockfile of `alotta-modules` (389 KB vs 13 KB) so the benchmark reflects a realistic install.

Test plan

  • `cargo build -p pacquet-integrated-benchmark` — the bigger `include_str!` builds fine.
  • First CI run will need to re-populate the cached `~/.local/share/verdaccio/storage` with 1352 tarballs from npm; subsequent runs are served from the `actions/cache` step.
  • The 10-min step timeout (line 118 of `.github/workflows/integrated-benchmark.yml`) may be tight on the cold cache-warming run; happy to bump it to 20 min if CI shows it's close.

…apshot one

The previous `alotta-modules` fixture had 7 direct deps and 26
snapshots, small enough that a frozen-lockfile install completed in
~50 ms. At that scale the wall-time is dominated by per-process
overhead (binary startup, lockfile parse), so scaling wins in the
install pipeline — shared SQLite connections, import-method changes,
symlink-pass parallelism — don't show up.

Swap in a realistic 1352-snapshot lockfile of `alotta-modules` (389 KB
vs 13 KB) so the benchmark reflects a workload where the install
pipeline actually matters. First CI run will need to repopulate the
cached verdaccio storage; subsequent runs are served from the existing
cache step.
@github-actions

github-actions Bot commented Apr 24, 2026

Copy link
Copy Markdown

Micro-Benchmark Results

Linux

group                          main                                   pr
-----                          ----                                   --
tarball/download_dependency    1.00     18.0±0.78ms   240.5 KB/sec    1.05     19.0±0.98ms   228.9 KB/sec

`allowBuilds: {core-js: false, es5-ext: false}` silences pnpm v11's
`ERR_PNPM_IGNORED_BUILDS` warnings for two packages whose postinstalls
would fire in this 1352-snapshot fixture. Pacquet's benchmark-side
`.npmrc` already sets `ignore-scripts=true` so nothing actually runs,
but pnpm still prints to stderr about the ignored builds and that
noise can reach hyperfine.

Stage the new file the same way `package.json` is staged — embedded
via `include_str!` for the default fixture, copied from `--fixture-dir`
when set. The `--fixture-dir` copy is gated on the file's existence
so existing fixture directories that predate this change don't start
erroring out.
@codecov

codecov Bot commented Apr 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.63%. Comparing base (badb479) to head (e3fdc91).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #262      +/-   ##
==========================================
- Coverage   90.04%   89.63%   -0.41%     
==========================================
  Files          58       58              
  Lines        4471     4527      +56     
==========================================
+ Hits         4026     4058      +32     
- Misses        445      469      +24     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

Copy link
Copy Markdown

Integrated-Benchmark Report (Linux)

Scenario: Frozen Lockfile

Command Mean [s] Min [s] Max [s] Relative
pacquet@HEAD 1.095 ± 0.009 1.082 1.107 1.00 ± 0.01
pacquet@main 1.094 ± 0.007 1.082 1.104 1.00
pnpm 2.550 ± 0.026 2.512 2.585 2.33 ± 0.03
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 1.09545879052,
      "stddev": 0.009108090554857748,
      "median": 1.09625982232,
      "user": 0.40491678000000003,
      "system": 2.5872452399999997,
      "min": 1.08182751782,
      "max": 1.10723339882,
      "times": [
        1.08182751782,
        1.09655198682,
        1.10723339882,
        1.0836143638200002,
        1.10507124582,
        1.1021163448200002,
        1.10337615782,
        1.0874212228200002,
        1.0959676578200002,
        1.09140800882
      ],
      "exit_codes": [
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 1.0938490233200002,
      "stddev": 0.007353889992471131,
      "median": 1.09376099332,
      "user": 0.41615018,
      "system": 2.5719799400000003,
      "min": 1.08208248382,
      "max": 1.1041609298200001,
      "times": [
        1.0908739118200002,
        1.0887367758200002,
        1.09520853482,
        1.1023697538200001,
        1.0923134518200002,
        1.08208248382,
        1.1041609298200001,
        1.10153707582,
        1.0956018578200002,
        1.08560545782
      ],
      "exit_codes": [
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ]
    },
    {
      "command": "pnpm",
      "mean": 2.55005058402,
      "stddev": 0.025888052063577947,
      "median": 2.5636800008200002,
      "user": 3.16584818,
      "system": 2.2522639399999997,
      "min": 2.5119818078200002,
      "max": 2.58461474082,
      "times": [
        2.51874097082,
        2.52996399582,
        2.56645358782,
        2.58461474082,
        2.5631142058200003,
        2.5642457958200002,
        2.56477127382,
        2.52443437782,
        2.57218508382,
        2.5119818078200002
      ],
      "exit_codes": [
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ]
    }
  ]
}

@zkochan zkochan merged commit edd07c3 into main Apr 24, 2026
12 of 14 checks passed
@zkochan zkochan deleted the bench/large-fixture branch April 24, 2026 06:14
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant