A benchmark answers only the question it asked, here two dependencies and 80 packages on a shared 4-CPU machine with a fast network.
The network dominates cold installs. A different network or registry mirror (Registries and Mirrors) moves every cold number.
Small projects shrink the gaps. npm 2,036 lost by under a second here; with 1,500 packages in a monorepo, the same ratios become minutes per CI job.
Native builds change the picture. BookNest has no install scripts. A dependency that compiles C++ adds the same seconds under every tool, or none at all under pnpm 69,400 until you approve it (Build Script Approval).
An earlier run on this machine used a larger, eight-dependency sample including the native bcrypt package, with npm 9.2.0 from Ubuntu 225 's archive. Its absolute numbers differ (npm took 11.5 s cold), but the broad order held: npm slowest cold, pnpm fastest warm, Yarn 11,798 PnP smallest on disk. Trust an order that holds across samples, weigh it against strictness and tool support, and run bench.sh on your own project.