# Package managers — clean (https://benchmarks.vlt.io/package-managers/clean?fixture=babylon)

Benchmarks / Package managers / clean

- Run: 2026-10-23 (the latest run). Results regenerate nightly.
- Measured: mean install time on the Babylon.js fixture, on GitHub-hosted ubuntu-24.04-arm runners.
- Filters in effect:
  - fixture: babylon
  - trend window: last 30 days, 2026-09-24 to 2026-10-23
  - trend metric: total time
  - hidden tools: none
  - excluded runs: none

## Headline

On Babylon.js, upm is fastest at 2.29s, 32.5× faster than npm.

- Fastest mean install: 2.29s (upm)
- Against npm: 32.5× (faster, on the mean)
- Tools ranked: 9 (with a completed run here)
- Spread: 39.4× (between the slowest and fastest tools that completed every fixture)

## Scenario

A first install on a fresh machine. Every package is resolved, downloaded and linked from scratch.

Before each run: binary preinstalled, cache empty, lockfile absent, node_modules removed.

## Leaderboard

Ranked by mean install time; lower is faster. ±RSD is the pooled relative standard deviation. Since last run compares with the previous run in the trend window.

| # | Tool | Key | Mean (s) | ±RSD | Against npm | Since last run | Fixtures | Version |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | upm | upm | 2.29 | 2.4% | 32.5× faster | −0.9% | 1/1 | 1.5.1 |
| 2 | bun | bun | 4.34 | 1.0% | 17.2× faster | +3.8% | 1/1 | 1.4.4 |
| 3 | deno | deno | 8.638 | 2.8% | 8.6× faster | +4.5% | 1/1 | 2.9.6 |
| 4 | aube | aube | 9.848 | 48.3% | 7.6× faster | −0.2% | 1/1 | 2.8.1 |
| 5 | vlt | vlt | 9.878 | 2.2% | 7.5× faster | +1.3% | 1/1 | 1.6.0 |
| 6 | pnpm | pnpm | 13.589 | 1.2% | 5.5× faster | +9.3% | 1/1 | 12.15.0 |
| 7 | yarn (berry) | berry | 29.322 | 0.5% | 2.5× faster | +10.4% | 1/1 | 4.18.1 |
| 8 | npm | npm | 74.432 | 1.1% | baseline | +9.6% | 1/1 | 12.2.1 |
| 9 | yarn | yarn | 90.289 | 1.1% | 1.21× slower | +2.3% | 1/1 | 1.22.22 |

Not ranked (completed no fixture): zpm.

## Install time

### Trend by tool

Each tool's mean on this run, and how it moved from its first to its last run in the trend window; lower is faster.

| Tool | Mean | Change in window | From | To |
| --- | --- | --- | --- | --- |
| upm | 2.29s | −78.3% | 2026-09-28 | 2026-10-23 |
| bun | 4.34s | +5.7% | 2026-09-24 | 2026-10-23 |
| deno | 8.64s | +2.9% | 2026-09-24 | 2026-10-23 |
| aube | 9.85s | −12.6% | 2026-09-25 | 2026-10-23 |
| vlt | 9.88s | −43.3% | 2026-09-24 | 2026-10-23 |
| pnpm | 13.6s | −11.1% | 2026-09-24 | 2026-10-23 |
| yarn (berry) | 29.3s | −10.6% | 2026-09-24 | 2026-10-23 |
| npm | 74.4s | −7.5% | 2026-09-24 | 2026-10-23 |
| yarn | 90.3s | −5.6% | 2026-09-24 | 2026-10-23 |

### Performance over time

Mean install time in seconds, one row per calendar day from 2026-09-24 to 2026-10-23. An empty cell is a day with no published value for that tool: no run, a DNF, a partial run or an exclusion. The chart bridges those with a dotted line by default; nothing is interpolated here. For other windows use the history endpoint: https://benchmarks.vlt.io/api/v1/package-managers/clean/history

```csv
date,upm,bun,deno,aube,vlt,pnpm,berry,npm,yarn,zpm
2026-09-24,,4.107,8.396,,17.425,15.285,32.808,80.448,95.695,
2026-09-25,,4.437,8.853,11.271,15.408,15.399,31.987,88.983,93.278,
2026-09-26,,3.689,7.832,8.39,12.559,9.535,30.402,67.841,84.506,
2026-09-27,,3.704,7.345,7.261,12.738,11.837,31.738,68.968,88.615,
2026-09-28,10.572,3.498,8.463,7.719,13.29,11.908,31.689,70.248,88.535,
2026-09-29,11.39,4.213,8.634,9.108,14.106,17.909,31.274,81.726,90.054,
2026-09-30,9.673,5.478,8.804,8.149,12.638,12.408,31.697,78.94,89.544,
2026-10-01,10.406,3.897,8.652,6.823,13.561,15.039,33.595,79.482,93.484,
2026-10-02,10.683,3.726,7.087,10.277,11.541,13.266,33.097,79.351,91.903,
2026-10-03,9.668,3.761,8.161,6.242,11.379,12.452,33.222,74.222,92.579,
2026-10-04,9.218,3.821,7.441,6.448,10.101,11.4,31.381,73.619,87.486,
2026-10-05,10.417,3.877,8.112,6.738,10.011,11.998,31.624,68.881,86.969,
2026-10-06,11.288,4.288,8.708,10.329,10.857,14.997,32.392,73.977,89.749,
2026-10-07,11.388,3.869,8.643,10.202,10.607,14.473,31.887,78.961,93.139,
2026-10-08,11.18,3.96,8.104,7.776,11.043,14.156,31.808,74.434,89.628,
2026-10-09,10.333,3.841,8.272,6.448,9.704,14.334,32.112,69.959,86.315,
2026-10-10,10.003,3.958,8.2,6.772,10.414,12.054,31.905,75.014,88.513,
2026-10-11,9.85,4.241,8.736,7.035,10.492,11.804,31.509,74.094,86.557,
2026-10-12,11.12,4.122,8.933,10.712,11.136,15.311,32.407,81.689,91.839,
2026-10-13,11.477,3.783,7.587,10.185,11.523,13.103,32.005,76.898,88.392,
2026-10-14,10.894,4.238,8.231,6.318,11.609,13.41,33.451,75.003,89.388,
2026-10-15,11.516,4.351,9.007,50.477,11.326,16.872,31.244,88.083,92.455,
2026-10-16,10.841,3.671,7.915,6.151,10.715,12.312,31.571,70.452,87.217,
2026-10-17,9.652,3.908,7.865,10.349,12.95,11.668,32.02,77.098,88.573,
2026-10-18,9.588,3.675,7.353,7.419,10.587,10.727,31.668,71.052,85.663,
2026-10-19,10.709,3.927,8.216,6.474,10.168,12.627,31.779,75.037,87.919,
2026-10-20,2.323,3.909,9.615,8.253,11.107,13.728,31.638,76.203,87.279,
2026-10-21,2.176,4.338,8.832,13.813,10.127,15.592,26.916,76.803,92.583,
2026-10-22,2.311,4.183,8.266,9.871,9.748,12.433,26.566,67.931,88.289,
2026-10-23,2.29,4.34,8.638,9.848,9.878,13.589,29.322,74.432,90.289,
```

#### DNF and coverage

- zpm on Babylon.js: DNF on 30 runs (exit 1): 2026-09-24, 2026-09-25, 2026-09-26, 2026-09-27, 2026-09-28, 2026-09-29, 2026-09-30, 2026-10-01, 2026-10-02, 2026-10-03, 2026-10-04, 2026-10-05, 2026-10-06, 2026-10-07, 2026-10-08, 2026-10-09, 2026-10-10, 2026-10-11, 2026-10-12, 2026-10-13, 2026-10-14, 2026-10-15, 2026-10-16, 2026-10-17, 2026-10-18, 2026-10-19, 2026-10-20, 2026-10-21, 2026-10-22, 2026-10-23
- aube on Babylon.js: DNF on 1 run (exit 1): 2026-09-24

#### Version changes

Observed between consecutive published runs; a missing marker is not evidence that nothing changed.

- 2026-09-25: vlt 1.1.1 → 1.2.0
- 2026-09-25: yarn (berry) 4.18.0 → 4.18.1
- 2026-09-25: aube 2.3.0 → 2.4.0
- 2026-09-27: aube 2.4.0 → 2.5.0
- 2026-09-28: aube 2.5.0 → 2.5.1
- 2026-09-29: vlt 1.2.0 → 1.3.1
- 2026-09-29: pnpm 12.6.0 → 12.8.1
- 2026-09-29: aube 2.5.1 → 2.6.0
- 2026-09-30: npm 12.1.0 → 12.2.0
- 2026-09-30: vlt 1.3.1 → 1.3.2
- 2026-09-30: aube 2.6.0 → 2.6.1
- 2026-09-30: upm added at 1.3.1
- 2026-10-01: vlt 1.3.2 → 1.3.3
- 2026-10-02: vlt 1.3.3 → 1.3.5
- 2026-10-02: upm 1.3.1 → 1.4.0
- 2026-10-03: vlt 1.3.5 → 1.3.6
- 2026-10-04: pnpm 12.8.1 → 12.9.1
- 2026-10-06: vlt 1.3.6 → 1.3.7
- 2026-10-08: pnpm 12.9.1 → 12.10.1
- 2026-10-08: aube 2.6.1 → 2.7.0
- 2026-10-09: vlt 1.3.7 → 1.3.8
- 2026-10-10: bun 1.4.2 → 1.4.3
- 2026-10-11: pnpm 12.10.1 → 12.11.2
- 2026-10-15: vlt 1.3.8 → 1.4.0
- 2026-10-17: pnpm 12.11.2 → 12.14.0
- 2026-10-18: aube 2.7.0 → 2.7.2
- 2026-10-20: vlt 1.4.0 → 1.5.0
- 2026-10-20: aube 2.7.2 → 2.8.1
- 2026-10-20: upm 1.4.0 → 1.5.0
- 2026-10-22: npm 12.2.0 → 12.2.1
- 2026-10-22: bun 1.4.3 → 1.4.4
- 2026-10-22: upm 1.5.0 → 1.5.1
- 2026-10-23: vlt 1.5.0 → 1.6.0
- 2026-10-23: pnpm 12.14.0 → 12.15.0

#### Flagged outliers

Runs far from the median of their neighbours (more than 4 robust standard deviations and 25%).

- 2026-09-25: npm, +27.8% from its neighbours
- 2026-09-29: pnpm, +47.3% from its neighbours
- 2026-09-30: bun, +46.3% from its neighbours
- 2026-10-02: aube, +51.6% from its neighbours
- 2026-10-06: aube, +56.7% from its neighbours
- 2026-10-07: aube, +51.0% from its neighbours
- 2026-10-12: aube, +55.2% from its neighbours
- 2026-10-15: aube, +473.5% from its neighbours

### Total install time by tool

Mean across the fixture, fastest first; only tools that completed every fixture.

| Tool | Time | Against npm |
| --- | --- | --- |
| upm | 2.29s | 32.5× faster |
| bun | 4.34s | 17.2× faster |
| deno | 8.64s | 8.6× faster |
| aube | 9.85s | 7.6× faster |
| vlt | 9.88s | 7.5× faster |
| pnpm | 13.6s | 5.5× faster |
| yarn (berry) | 29.3s | 2.5× faster |
| npm | 74.4s | baseline |
| yarn | 90.3s | 1.21× slower |

### Total install time data

Mean seconds per fixture. DNF: the run exited non-zero and is excluded from every figure. —: not run on that fixture.

| Tool | Babylon.js |
| --- | --- |
| upm | 2.29 |
| bun | 4.34 |
| deno | 8.638 |
| aube | 9.848 |
| vlt | 9.878 |
| pnpm | 13.589 |
| yarn (berry) | 29.322 |
| npm | 74.432 |
| yarn | 90.289 |
| zpm | DNF |

## Per-package install time

Derived: install time divided by the number of packages the tool installed. A tool with a time but no published package count is left out rather than divided by a guess.

### Per-package time by tool

Milliseconds per installed package, mean across fixtures, fastest first; only tools with a value on every fixture.

| Tool | Per package | Against npm |
| --- | --- | --- |
| upm | 1.5ms | 28.4× faster |
| bun | 2.7ms | 15.5× faster |
| deno | 5.8ms | 7.2× faster |
| vlt | 6.4ms | 6.5× faster |
| aube | 7.3ms | 5.7× faster |
| pnpm | 8.6ms | 4.8× faster |
| yarn (berry) | 16.7ms | 2.5× faster |
| npm | 41.4ms | baseline |

### Per-package time data

| Tool | Babylon.js |
| --- | --- |
| upm | 1.46 |
| bun | 2.674 |
| deno | 5.782 |
| aube | 7.322 |
| vlt | 6.41 |
| pnpm | 8.573 |
| yarn (berry) | 16.679 |
| npm | 41.42 |
| yarn | — |
| zpm | DNF |

## Install footprint

### Package count

Packages installed. A range after a count means that tool's installs did not all produce the same number.

| Tool | Babylon.js | Total |
| --- | --- | --- |
| aube | 1345 | 1345 |
| deno | 1494 | 1494 |
| vlt | 1541 (1532–1549) | 1541 |
| upm | 1568 | 1568 |
| pnpm | 1585 | 1585 |
| bun | 1623 | 1623 |
| yarn (berry) | 1758 (1728–1788) | 1758 |
| npm | 1797 (1791–1801) | 1797 |

### Spawned processes

| Tool | Babylon.js | Total |
| --- | --- | --- |
| bun | 2 | 2 |
| deno | 2 | 2 |
| zpm | 3 | 3 |
| npm | 4 | 4 |
| yarn | 4 | 4 |
| aube | 4 | 4 |
| upm | 4 | 4 |
| yarn (berry) | 6 | 6 |
| pnpm | 7 | 7 |
| vlt | 10 | 10 |

## Caveats

- Total time is the measurement. Per-package time, change since start and relative-to-baseline are derived from it and labelled derived wherever they appear.
- yarn (zpm) completed no fixture. It ran, but with no completed run it has no mean and is not ranked.
- Total install time by tool — Not drawn: yarn (zpm). A bar is a mean over every fixture, and this tool did not complete every one.
- Per-package time by tool — Not drawn: yarn (zpm). A bar is a mean over every fixture, and this tool did not complete every one.
- Disclosure. vlt publishes this benchmark, and vlt is one of the tools it measures. The suite, its configuration and every result file are public.

## Method

Each tool is configured to behave as much like its peers as possible, but standardisation has limits — tools differ in what they install by default, and in which security checks and validations they run. So the suite counts the packages each tool actually installed, after installation, and publishes both figures: total install time, and time per package. A tool that installs fewer packages finishes sooner without necessarily being faster, which is why neither number is reported alone.

## Environment

- Workflow label: `ubuntu-24.04-arm`
- VM: `Linux (Ubuntu 24.04)`
- Architecture: `arm64`
- Processor (CPU): `4 cores`
- Memory (RAM): `16 GB`
- Storage (SSD): `14 GB`

The label is read from the workflow. The remaining figures are GitHub's published specification for standard public runners, not measurements taken here.

## Data & source

- Raw results, Babylon.js (JSON): https://benchmarks-data.vlt.io/2026-10-23/babylon-clean.json
- This report as JSON: https://benchmarks.vlt.io/api/v1/package-managers/clean?fixture=babylon
- API description: https://benchmarks.vlt.io/openapi.json
- Index of every page: https://benchmarks.vlt.io/llms.txt
- Source code: https://github.com/vltpkg/benchmarks
- Methodology: https://github.com/vltpkg/benchmarks/blob/main/docs/METHODOLOGY.md
- Methodology slides: https://docs.google.com/presentation/d/1ojXF4jb_1MyGhew2LCbdrZ4e_0vYUr-7CoMJLJsHwZY/edit?usp=sharing
- Runner specification: https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories

## Cite

- URL: https://benchmarks.vlt.io/package-managers/clean?date=2026-10-23&fixture=babylon
- APA: vlt technology inc. (2026, October 23). vlt benchmarks: Package managers, clean [Data set]. https://benchmarks.vlt.io/package-managers/clean?date=2026-10-23&fixture=babylon

```bibtex
@misc{vlt-benchmarks-2026-10-23,
  title  = {vlt benchmarks: Package managers, clean},
  author = {{vlt technology inc}},
  year   = {2026},
  month  = oct,
  note   = {Run of 2026-10-23; results regenerate nightly on GitHub-hosted ubuntu-24.04-arm runners.},
  url    = {https://benchmarks.vlt.io/package-managers/clean?date=2026-10-23&fixture=babylon}
}
```
