The fastest are usually either Yarn PnP or pnpm. Note however that regardless of the package managers it's quite clear that performances are reaching a plateau in the common cases. I personally believe a better thing to consider are feature set, stability, documentation, and general codebase health (since it impacts how fast features and bugfixes ship, and how dangerous upgrades may be). But those are quite a bit harder to measure, of course!
I didn't look into it since Yarn was released.
I always thought it was weird that npm didnt use a central store on your hard drive for your packages and instead just duplicated them everywhere, and i always thought it was even weirder that yarn didn't change this behaviour, but maybe i'm missing something.
So now a project has to explicitly opt-in to Yarn pnp.
The reason for that is that PnP tends to require recent versions of some of your dependencies, so migrating to it can be somewhat involved, and it's better experience to let you keep using the install strategy you're used to until you decide to change it yourself.
New projects, on the other hand, already use the latest versions from their dependencies, so it's a much better starting point for PnP.
Probably any package that ships assets (static files) and uses file I/O to read instead of require()
1. https://pnpm.io/blog/2020/05/27/flat-node-modules-is-not-the...
You can override any version of a package anywhere in the dependency tree. For example, to resolve a CVE in one of your zillion packages.
pnpm has "hooks" which can do that and more, though I still prefer yarn resolutions.
A quick and lazy google search didn't yield a result...