perf(resolve-dependencies): avoid copying parentParentPkgs in resolvePeersOfNode (#6736)

This commit is contained in:
Bogdan Savluk
2023-06-30 01:00:51 +02:00
committed by GitHub
parent e9684b5595
commit 8a68f5ad24
2 changed files with 10 additions and 5 deletions

View File

@@ -0,0 +1,5 @@
---
"@pnpm/resolve-dependencies": patch
---
replacing object copying with a prototype chain, avoiding extra memory allocations in resolvePeersOfNode function

View File

@@ -289,16 +289,16 @@ function resolvePeersOfNode<T extends PartialResolvedPackage> (
const children = node.children
const parentPkgs = isEmpty(children)
? parentParentPkgs
: {
...parentParentPkgs,
...toPkgByName(
: Object.assign(
Object.create(parentParentPkgs),
toPkgByName(
Object.entries(children).map(([alias, nodeId]) => ({
alias,
node: ctx.dependenciesTree[nodeId],
nodeId,
}))
),
}
)
)
const hit = ctx.peersCache.get(resolvedPackage.depPath)?.find((cache) =>
cache.resolvedPeers
.every(([name, cachedNodeId]) => {