Better Worktrees, Part 2: The Benchmarks
Putting Treepool to the test and finding some differences between package managers along the way
This follows up on my Treepool post with some benchmark numbers.
The experiment
I measured how much time twt could save across monorepos of different sizes and different package managers on my M4 Pro.
The monorepos had the following numbers of direct dependencies:
- XS: 160
- S: 240
- M: 320
- L: 400
- XL: 473
These counts include only direct dependencies. The XL fixtures contain roughly 5,700 unique package/version pairs, including transitive dependencies.
I tested the following runtimes/package managers:
- npm
- yarn v1
- yarn berry with
nodeLinker=node_modules - pnpm with default
node-linker=isolated - bun with
linker=isolated
Both paths used a warm package cache, which is a reasonable assumption for development environments. The twt path also used an available warm slot where dependencies had already been installed at least once.
I then measured the time it takes to:
- Create a new regular worktree and install deps
- versus allocate a warm
twtslot and install dependencies
The observations & my thoughts
twtwas fastest in every tested case, which is unsurprising sincetwtslots literally have the dependencies pre-installed.- Bun is fast.
twtstill reduces the time until a worktree is ready, but the absolute savings are smaller with Bun. - The time saved with
twtis cool, but I was more fascinated by the differences in install time between package managers, even with warm caches.
The raw numbers
Breakdown & measurements 1,016 unique packages
- Unique package/version pairs
- 1,016
- Installed instances
- 1,091
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.04 s | 0.20 s |
| Install | 3.31 s | 0.54 s |
| Total | 3.35 s | 0.74 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.244 | 0.720 | 0.965 |
| 1 | Regular | 0.046 | 3.336 | 3.383 |
| 2 | Regular | 0.042 | 3.310 | 3.353 |
| 2 | Treepool | 0.207 | 0.491 | 0.699 |
| 3 | Treepool | 0.186 | 0.541 | 0.728 |
| 3 | Regular | 0.045 | 3.301 | 3.347 |
| 4 | Regular | 0.039 | 3.260 | 3.299 |
| 4 | Treepool | 0.204 | 0.542 | 0.747 |
| 5 | Treepool | 0.203 | 0.537 | 0.742 |
| 5 | Regular | 0.047 | 3.358 | 3.406 |
Breakdown & measurements 1,021 unique packages
- Unique package/version pairs
- 1,021
- Installed instances
- 1,106
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.04 s | 0.18 s |
| Install | 3.56 s | 0.24 s |
| Total | 3.60 s | 0.42 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.243 | 0.239 | 0.483 |
| 1 | Regular | 0.038 | 5.370 | 5.410 |
| 2 | Regular | 0.040 | 3.559 | 3.600 |
| 2 | Treepool | 0.183 | 0.238 | 0.422 |
| 3 | Treepool | 0.187 | 0.241 | 0.428 |
| 3 | Regular | 0.038 | 3.562 | 3.601 |
| 4 | Regular | 0.038 | 3.555 | 3.593 |
| 4 | Treepool | 0.183 | 0.231 | 0.414 |
| 5 | Treepool | 0.180 | 0.236 | 0.417 |
| 5 | Regular | 0.070 | 3.599 | 3.671 |
Breakdown & measurements 1,036 unique packages
- Unique package/version pairs
- 1,036
- Installed instances
- 1,126
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.04 s | 0.20 s |
| Install | 3.02 s | 0.65 s |
| Total | 3.07 s | 0.85 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Regular | 0.046 | 3.024 | 3.072 |
| 1 | Treepool | 0.258 | 0.771 | 1.030 |
| 2 | Treepool | 0.189 | 0.648 | 0.838 |
| 2 | Regular | 0.040 | 3.005 | 3.046 |
| 3 | Regular | 0.041 | 3.028 | 3.070 |
| 3 | Treepool | 0.207 | 0.663 | 0.871 |
| 4 | Treepool | 0.191 | 0.650 | 0.842 |
| 4 | Regular | 0.044 | 2.916 | 2.961 |
| 5 | Regular | 0.044 | 3.044 | 3.088 |
| 5 | Treepool | 0.197 | 0.655 | 0.853 |
Breakdown & measurements 1,016 unique packages
- Unique package/version pairs
- 1,016
- Installed instances
- 1,016
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.05 s | 0.19 s |
| Install | 1.01 s | 0.05 s |
| Total | 1.05 s | 0.24 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Regular | 0.079 | 3.252 | 3.332 |
| 1 | Treepool | 0.259 | 0.256 | 0.516 |
| 2 | Treepool | 0.190 | 0.045 | 0.237 |
| 2 | Regular | 0.046 | 1.008 | 1.054 |
| 3 | Regular | 0.048 | 1.005 | 1.055 |
| 3 | Treepool | 0.204 | 0.041 | 0.246 |
| 4 | Treepool | 0.192 | 0.047 | 0.240 |
| 4 | Regular | 0.046 | 0.976 | 1.023 |
| 5 | Regular | 0.045 | 0.970 | 1.016 |
| 5 | Treepool | 0.186 | 0.046 | 0.233 |
Breakdown & measurements 1,016 unique packages
- Unique package/version pairs
- 1,016
- Installed instances
- 1,018
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.04 s | 0.18 s |
| Install | 0.60 s | 0.04 s |
| Total | 0.68 s | 0.23 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.180 | 0.404 | 0.588 |
| 1 | Regular | 0.076 | 1.071 | 1.147 |
| 2 | Regular | 0.040 | 0.641 | 0.682 |
| 2 | Treepool | 0.238 | 0.039 | 0.278 |
| 3 | Treepool | 0.185 | 0.039 | 0.225 |
| 3 | Regular | 0.040 | 0.598 | 0.639 |
| 4 | Regular | 0.073 | 0.602 | 0.676 |
| 4 | Treepool | 0.183 | 0.037 | 0.220 |
| 5 | Treepool | 0.179 | 0.040 | 0.220 |
| 5 | Regular | 0.038 | 0.604 | 0.643 |
Breakdown & measurements 1,855 unique packages
- Unique package/version pairs
- 1,855
- Installed instances
- 3,337
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.09 s | 0.20 s |
| Install | 11.28 s | 1.36 s |
| Total | 11.36 s | 1.57 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Regular | 0.078 | 11.500 | 11.578 |
| 1 | Treepool | 0.198 | 1.456 | 1.655 |
| 2 | Treepool | 0.209 | 1.361 | 1.571 |
| 2 | Regular | 0.088 | 11.293 | 11.381 |
| 3 | Regular | 0.081 | 11.279 | 11.361 |
| 3 | Treepool | 0.198 | 1.359 | 1.558 |
| 4 | Treepool | 0.189 | 1.418 | 1.608 |
| 4 | Regular | 0.090 | 11.249 | 11.340 |
| 5 | Regular | 0.088 | 11.272 | 11.361 |
| 5 | Treepool | 0.203 | 1.360 | 1.563 |
Breakdown & measurements 1,864 unique packages
- Unique package/version pairs
- 1,864
- Installed instances
- 3,350
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.07 s | 0.24 s |
| Install | 13.59 s | 0.35 s |
| Total | 13.67 s | 0.58 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Regular | 0.076 | 15.260 | 15.337 |
| 1 | Treepool | 0.242 | 0.352 | 0.595 |
| 2 | Treepool | 0.185 | 0.351 | 0.537 |
| 2 | Regular | 0.072 | 14.491 | 14.564 |
| 3 | Regular | 0.075 | 13.427 | 13.504 |
| 3 | Treepool | 0.241 | 0.340 | 0.583 |
| 4 | Treepool | 0.235 | 0.340 | 0.577 |
| 4 | Regular | 0.068 | 13.514 | 13.584 |
| 5 | Regular | 0.074 | 13.594 | 13.669 |
| 5 | Treepool | 0.228 | 0.349 | 0.578 |
Breakdown & measurements 1,876 unique packages
- Unique package/version pairs
- 1,876
- Installed instances
- 3,169
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.08 s | 0.20 s |
| Install | 8.11 s | 1.47 s |
| Total | 8.20 s | 1.66 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.248 | 1.622 | 1.872 |
| 1 | Regular | 0.074 | 8.130 | 8.205 |
| 2 | Regular | 0.085 | 8.109 | 8.195 |
| 2 | Treepool | 0.198 | 1.524 | 1.724 |
| 3 | Treepool | 0.195 | 1.468 | 1.664 |
| 3 | Regular | 0.048 | 8.155 | 8.204 |
| 4 | Regular | 0.084 | 8.067 | 8.152 |
| 4 | Treepool | 0.187 | 1.451 | 1.640 |
| 5 | Treepool | 0.200 | 1.457 | 1.658 |
| 5 | Regular | 0.080 | 8.049 | 8.131 |
Breakdown & measurements 1,855 unique packages
- Unique package/version pairs
- 1,855
- Installed instances
- 1,880
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.09 s | 0.21 s |
| Install | 6.80 s | 0.09 s |
| Total | 6.88 s | 0.32 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.202 | 0.374 | 0.578 |
| 1 | Regular | 0.072 | 8.675 | 8.748 |
| 2 | Regular | 0.085 | 6.709 | 6.796 |
| 2 | Treepool | 0.206 | 0.079 | 0.285 |
| 3 | Treepool | 0.238 | 0.083 | 0.322 |
| 3 | Regular | 0.089 | 6.822 | 6.912 |
| 4 | Regular | 0.082 | 6.798 | 6.882 |
| 4 | Treepool | 0.249 | 0.086 | 0.337 |
| 5 | Treepool | 0.189 | 0.090 | 0.280 |
| 5 | Regular | 0.089 | 6.781 | 6.871 |
Breakdown & measurements 1,855 unique packages
- Unique package/version pairs
- 1,855
- Installed instances
- 1,943
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.07 s | 0.24 s |
| Install | 1.39 s | 0.12 s |
| Total | 1.47 s | 0.37 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Regular | 0.070 | 1.987 | 2.059 |
| 1 | Treepool | 0.239 | 0.454 | 0.695 |
| 2 | Treepool | 0.238 | 0.123 | 0.362 |
| 2 | Regular | 0.078 | 1.388 | 1.467 |
| 3 | Regular | 0.073 | 1.435 | 1.509 |
| 3 | Treepool | 0.234 | 0.131 | 0.365 |
| 4 | Treepool | 0.242 | 0.122 | 0.366 |
| 4 | Regular | 0.070 | 1.392 | 1.464 |
| 5 | Regular | 0.076 | 1.394 | 1.471 |
| 5 | Treepool | 0.187 | 0.077 | 0.265 |
Breakdown & measurements 2,980 unique packages
- Unique package/version pairs
- 2,980
- Installed instances
- 5,561
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.08 s | 0.20 s |
| Install | 25.09 s | 2.93 s |
| Total | 25.17 s | 3.13 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.199 | 2.933 | 3.133 |
| 1 | Regular | 0.084 | 25.061 | 25.147 |
| 2 | Regular | 0.084 | 25.193 | 25.277 |
| 2 | Treepool | 0.244 | 3.049 | 3.294 |
| 3 | Treepool | 0.198 | 2.826 | 3.025 |
| 3 | Regular | 0.138 | 24.969 | 25.108 |
| 4 | Regular | 0.086 | 25.165 | 25.252 |
| 4 | Treepool | 0.252 | 3.153 | 3.406 |
| 5 | Treepool | 0.203 | 2.838 | 3.042 |
| 5 | Regular | 0.083 | 25.086 | 25.170 |
Breakdown & measurements 3,014 unique packages
- Unique package/version pairs
- 3,014
- Installed instances
- 5,445
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.13 s | 0.24 s |
| Install | 66.93 s | 0.50 s |
| Total | 67.05 s | 0.74 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.234 | 0.504 | 0.739 |
| 1 | Regular | 0.129 | 66.685 | 66.815 |
| 2 | Regular | 0.126 | 67.600 | 67.728 |
| 2 | Treepool | 0.292 | 0.504 | 0.798 |
| 3 | Treepool | 0.185 | 0.506 | 0.692 |
| 3 | Regular | 0.126 | 66.927 | 67.054 |
| 4 | Regular | 0.130 | 66.836 | 66.967 |
| 4 | Treepool | 0.290 | 0.506 | 0.797 |
| 5 | Treepool | 0.236 | 0.503 | 0.740 |
| 5 | Regular | 0.130 | 66.976 | 67.107 |
Breakdown & measurements 3,028 unique packages
- Unique package/version pairs
- 3,028
- Installed instances
- 4,799
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.08 s | 0.26 s |
| Install | 18.55 s | 2.72 s |
| Total | 18.62 s | 2.98 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Regular | 0.090 | 18.867 | 18.958 |
| 1 | Treepool | 0.254 | 2.758 | 3.012 |
| 2 | Treepool | 0.314 | 2.446 | 2.761 |
| 2 | Regular | 0.082 | 18.509 | 18.592 |
| 3 | Regular | 0.070 | 18.616 | 18.688 |
| 3 | Treepool | 0.257 | 2.719 | 2.977 |
| 4 | Treepool | 0.198 | 2.525 | 2.723 |
| 4 | Regular | 0.072 | 18.547 | 18.620 |
| 5 | Regular | 0.080 | 18.526 | 18.607 |
| 5 | Treepool | 0.267 | 2.745 | 3.013 |
Breakdown & measurements 2,994 unique packages
- Unique package/version pairs
- 2,994
- Installed instances
- 3,116
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.08 s | 0.25 s |
| Install | 23.27 s | 0.14 s |
| Total | 23.36 s | 0.38 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Regular | 0.083 | 25.658 | 25.743 |
| 1 | Treepool | 0.254 | 0.671 | 0.926 |
| 2 | Treepool | 0.198 | 0.146 | 0.345 |
| 2 | Regular | 0.080 | 26.758 | 26.839 |
| 3 | Regular | 0.090 | 23.274 | 23.365 |
| 3 | Treepool | 0.257 | 0.141 | 0.399 |
| 4 | Treepool | 0.249 | 0.132 | 0.381 |
| 4 | Regular | 0.079 | 21.864 | 21.944 |
| 5 | Regular | 0.082 | 21.117 | 21.200 |
| 5 | Treepool | 0.201 | 0.141 | 0.343 |
Breakdown & measurements 2,978 unique packages
- Unique package/version pairs
- 2,978
- Installed instances
- 3,194
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.08 s | 0.24 s |
| Install | 5.34 s | 0.18 s |
| Total | 5.41 s | 0.42 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.237 | 0.771 | 1.009 |
| 1 | Regular | 0.131 | 6.766 | 6.898 |
| 2 | Regular | 0.069 | 5.207 | 5.277 |
| 2 | Treepool | 0.233 | 0.176 | 0.410 |
| 3 | Treepool | 0.180 | 0.183 | 0.364 |
| 3 | Regular | 0.075 | 5.335 | 5.411 |
| 4 | Regular | 0.072 | 5.298 | 5.370 |
| 4 | Treepool | 0.237 | 0.188 | 0.426 |
| 5 | Treepool | 0.237 | 0.182 | 0.420 |
| 5 | Regular | 0.077 | 5.462 | 5.540 |
Breakdown & measurements 3,936 unique packages
- Unique package/version pairs
- 3,936
- Installed instances
- 7,059
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.14 s | 0.26 s |
| Install | 37.32 s | 4.36 s |
| Total | 37.45 s | 4.63 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Regular | 0.141 | 37.124 | 37.268 |
| 1 | Treepool | 0.256 | 4.464 | 4.721 |
| 2 | Treepool | 0.193 | 4.091 | 4.285 |
| 2 | Regular | 0.200 | 36.827 | 37.029 |
| 3 | Regular | 0.128 | 37.318 | 37.449 |
| 3 | Treepool | 0.304 | 4.424 | 4.732 |
| 4 | Treepool | 0.256 | 4.143 | 4.400 |
| 4 | Regular | 0.137 | 37.862 | 38.001 |
| 5 | Regular | 0.132 | 37.938 | 38.072 |
| 5 | Treepool | 0.261 | 4.364 | 4.627 |
Breakdown & measurements 3,982 unique packages
- Unique package/version pairs
- 3,982
- Installed instances
- 6,761
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.13 s | 0.29 s |
| Install | 106.55 s | 0.66 s |
| Total | 106.68 s | 0.95 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Regular | 0.127 | 106.549 | 106.678 |
| 1 | Treepool | 0.289 | 0.664 | 0.954 |
| 2 | Treepool | 0.242 | 0.660 | 0.903 |
| 2 | Regular | 0.132 | 107.156 | 107.289 |
| 3 | Regular | 0.128 | 105.921 | 106.050 |
| 3 | Treepool | 0.317 | 0.671 | 0.989 |
| 4 | Treepool | 0.194 | 0.639 | 0.833 |
| 4 | Regular | 0.135 | 106.208 | 106.344 |
| 5 | Regular | 0.130 | 107.494 | 107.625 |
| 5 | Treepool | 0.297 | 0.669 | 0.967 |
Breakdown & measurements 3,995 unique packages
- Unique package/version pairs
- 3,995
- Installed instances
- 6,115
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.13 s | 0.26 s |
| Install | 27.81 s | 3.95 s |
| Total | 27.92 s | 4.21 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.262 | 3.951 | 4.215 |
| 1 | Regular | 0.130 | 28.079 | 28.211 |
| 2 | Regular | 0.129 | 27.808 | 27.938 |
| 2 | Treepool | 0.259 | 4.008 | 4.268 |
| 3 | Treepool | 0.204 | 3.683 | 3.888 |
| 3 | Regular | 0.085 | 27.838 | 27.924 |
| 4 | Regular | 0.142 | 27.601 | 27.744 |
| 4 | Treepool | 0.258 | 3.972 | 4.232 |
| 5 | Treepool | 0.192 | 3.657 | 3.850 |
| 5 | Regular | 0.137 | 27.517 | 27.655 |
Breakdown & measurements 3,957 unique packages
- Unique package/version pairs
- 3,957
- Installed instances
- 4,082
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.14 s | 0.25 s |
| Install | 31.84 s | 0.72 s |
| Total | 31.98 s | 0.98 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.266 | 0.716 | 0.983 |
| 1 | Regular | 0.143 | 31.836 | 31.980 |
| 2 | Regular | 0.133 | 30.443 | 30.577 |
| 2 | Treepool | 0.263 | 0.723 | 0.987 |
| 3 | Treepool | 0.196 | 0.147 | 0.344 |
| 3 | Regular | 0.147 | 30.822 | 30.969 |
| 4 | Regular | 0.089 | 35.202 | 35.292 |
| 4 | Treepool | 0.249 | 0.774 | 1.024 |
| 5 | Treepool | 0.204 | 0.190 | 0.395 |
| 5 | Regular | 0.138 | 37.299 | 37.438 |
Breakdown & measurements 3,935 unique packages
- Unique package/version pairs
- 3,935
- Installed instances
- 4,165
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.13 s | 0.24 s |
| Install | 9.47 s | 0.29 s |
| Total | 9.59 s | 0.52 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Regular | 0.130 | 10.029 | 10.160 |
| 1 | Treepool | 0.235 | 1.103 | 1.339 |
| 2 | Treepool | 0.230 | 0.286 | 0.518 |
| 2 | Regular | 0.132 | 9.999 | 10.133 |
| 3 | Regular | 0.127 | 9.465 | 9.593 |
| 3 | Treepool | 0.236 | 0.278 | 0.515 |
| 4 | Treepool | 0.232 | 0.285 | 0.518 |
| 4 | Regular | 0.129 | 9.438 | 9.568 |
| 5 | Regular | 0.127 | 9.422 | 9.551 |
| 5 | Treepool | 0.242 | 0.236 | 0.479 |
Breakdown & measurements 5,712 unique packages
- Unique package/version pairs
- 5,712
- Installed instances
- 10,743
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.14 s | 0.25 s |
| Install | 47.99 s | 7.99 s |
| Total | 48.13 s | 8.19 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.253 | 7.891 | 8.145 |
| 1 | Regular | 0.144 | 48.351 | 48.496 |
| 2 | Regular | 0.145 | 47.864 | 48.012 |
| 2 | Treepool | 0.312 | 8.262 | 8.576 |
| 3 | Treepool | 0.200 | 7.988 | 8.189 |
| 3 | Regular | 0.138 | 47.743 | 47.882 |
| 4 | Regular | 0.145 | 48.948 | 49.096 |
| 4 | Treepool | 0.302 | 8.166 | 8.471 |
| 5 | Treepool | 0.202 | 7.821 | 8.024 |
| 5 | Regular | 0.140 | 47.989 | 48.130 |
Breakdown & measurements 5,763 unique packages
- Unique package/version pairs
- 5,763
- Installed instances
- 10,125
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.14 s | 0.24 s |
| Install | 153.18 s | 0.90 s |
| Total | 153.32 s | 1.15 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.239 | 0.936 | 1.177 |
| 1 | Regular | 0.183 | 162.353 | 162.540 |
| 2 | Regular | 0.132 | 153.132 | 153.265 |
| 2 | Treepool | 0.245 | 0.905 | 1.151 |
| 3 | Treepool | 0.246 | 0.891 | 1.138 |
| 3 | Regular | 0.150 | 172.647 | 172.798 |
| 4 | Regular | 0.142 | 153.176 | 153.320 |
| 4 | Treepool | 0.254 | 0.923 | 1.178 |
| 5 | Treepool | 0.200 | 0.872 | 1.079 |
| 5 | Regular | 0.133 | 151.710 | 151.844 |
Breakdown & measurements 5,779 unique packages
- Unique package/version pairs
- 5,779
- Installed instances
- 9,690
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.13 s | 0.25 s |
| Install | 35.53 s | 5.45 s |
| Total | 35.66 s | 5.70 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Regular | 0.128 | 35.533 | 35.663 |
| 1 | Treepool | 0.250 | 5.450 | 5.702 |
| 2 | Treepool | 0.201 | 4.948 | 5.150 |
| 2 | Regular | 0.129 | 34.849 | 34.979 |
| 3 | Regular | 0.146 | 35.898 | 36.045 |
| 3 | Treepool | 0.251 | 5.458 | 5.710 |
| 4 | Treepool | 0.200 | 4.931 | 5.132 |
| 4 | Regular | 0.146 | 34.734 | 34.881 |
| 5 | Regular | 0.134 | 36.298 | 36.433 |
| 5 | Treepool | 0.261 | 5.476 | 5.739 |
Breakdown & measurements 5,730 unique packages
- Unique package/version pairs
- 5,730
- Installed instances
- 5,977
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.14 s | 0.24 s |
| Install | 43.12 s | 0.95 s |
| Total | 43.26 s | 1.19 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Regular | 0.138 | 46.422 | 46.561 |
| 1 | Treepool | 0.253 | 1.123 | 1.377 |
| 2 | Treepool | 0.197 | 0.209 | 0.407 |
| 2 | Regular | 0.134 | 39.286 | 39.421 |
| 3 | Regular | 0.126 | 36.875 | 37.002 |
| 3 | Treepool | 0.245 | 1.016 | 1.263 |
| 4 | Treepool | 0.199 | 0.210 | 0.410 |
| 4 | Regular | 0.143 | 43.120 | 43.264 |
| 5 | Regular | 0.145 | 44.941 | 45.087 |
| 5 | Treepool | 0.238 | 0.950 | 1.189 |
Breakdown & measurements 5,705 unique packages
- Unique package/version pairs
- 5,705
- Installed instances
- 6,050
| Stage | Regular | Treepool |
|---|---|---|
| Allocate | 0.13 s | 0.24 s |
| Install | 12.61 s | 0.78 s |
| Total | 12.74 s | 1.02 s |
| Run | Mode | Allocate | Install | Total |
|---|---|---|---|---|
| 1 | Treepool | 0.236 | 2.058 | 2.295 |
| 1 | Regular | 0.129 | 14.793 | 14.923 |
| 2 | Regular | 0.126 | 13.051 | 13.178 |
| 2 | Treepool | 0.258 | 0.774 | 1.034 |
| 3 | Treepool | 0.249 | 0.774 | 1.023 |
| 3 | Regular | 0.134 | 12.516 | 12.650 |
| 4 | Regular | 0.147 | 12.557 | 12.704 |
| 4 | Treepool | 0.239 | 0.776 | 1.016 |
| 5 | Treepool | 0.185 | 0.780 | 0.967 |
| 5 | Regular | 0.129 | 12.613 | 12.743 |
More details
Total is elapsed time from allocation through install, before verification and cleanup. Stage medians are calculated separately, so they may not add up to the total median. Speedup is regular median total ÷ Treepool median total.
Both paths use warm package caches and identical dependency inputs. Treepool also retains an installed dependency tree. Install scripts are disabled, and execution order alternates across five runs. Initial cache and slot preparation are excluded. Network access is disabled for Yarn, npm and pnpm; Bun uses its warm cache, with offline mode only when supported.
Sizes vary workspace count, dependency overlap and versions as well as direct dependencies. Unique packages means external name/version pairs; installed instances also count duplicate copies and peer variants, excluding workspace packages. These results measure this fixture and machine, with no dependency changes between tasks.
Measured 9 October 2026 · macOS-26.6.2-arm64-arm-64bit · Node v24.21.0 · twt 0.2.1. Run: 20261009T045559-61968.