perf: don't create holey arrays (#32155)

Don't use `Array` constructor with the size value (ex. `new Array(5)`) - this will create a `HOLEY_ELEMENTS` array (even if this array is filled in later on!);

https://v8.dev/blog/elements-kinds
https://stackoverflow.com/questions/32054170/how-to-resize-an-array

PR Close #32155
This commit is contained in:
Miško Hevery
2019-08-15 13:42:17 -07:00
committed by Andrew Kushnir
parent c957dfc167
commit 64770571b2
32 changed files with 137 additions and 83 deletions

View File

@ -73,7 +73,7 @@ export function elementDef(
[ns, name] = splitNamespace(namespaceAndName);
}
bindings = bindings || [];
const bindingDefs: BindingDef[] = new Array(bindings.length);
const bindingDefs: BindingDef[] = [];
for (let i = 0; i < bindings.length; i++) {
const [bindingFlags, namespaceAndName, suffixOrSecurityContext] = bindings[i];
@ -93,7 +93,7 @@ export function elementDef(
{flags: bindingFlags, ns, name, nonMinifiedName: name, securityContext, suffix};
}
outputs = outputs || [];
const outputDefs: OutputDef[] = new Array(outputs.length);
const outputDefs: OutputDef[] = [];
for (let i = 0; i < outputs.length; i++) {
const [target, eventName] = outputs[i];
outputDefs[i] = {