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:
committed by
Andrew Kushnir
parent
c957dfc167
commit
64770571b2
@@ -50,12 +50,12 @@ export class TableComponent {
|
||||
this._rootEl.appendChild(table);
|
||||
const tbody = document.createElement('tbody');
|
||||
table.appendChild(tbody);
|
||||
this._renderCells = new Array(data.length);
|
||||
this._renderCells = [];
|
||||
for (let r = 0; r < data.length; r++) {
|
||||
const dataRow = data[r];
|
||||
const tr = document.createElement('tr');
|
||||
tbody.appendChild(tr);
|
||||
const renderRow = new Array(dataRow.length);
|
||||
const renderRow = [];
|
||||
this._renderCells[r] = renderRow;
|
||||
for (let c = 0; c < dataRow.length; c++) {
|
||||
const dataCell = dataRow[c];
|
||||
|
||||
@@ -75,7 +75,7 @@ class MultiplyDirectiveResolver extends DirectiveResolver {
|
||||
|
||||
private _fillCache(component: Type) {
|
||||
const view = super.resolve(component);
|
||||
const multipliedTemplates = new Array(this._multiplyBy);
|
||||
const multipliedTemplates = [];
|
||||
for (let i = 0; i < this._multiplyBy; ++i) {
|
||||
multipliedTemplates[i] = view.template;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ let testList = null;
|
||||
|
||||
export function main() {
|
||||
const size = getIntParameter('size');
|
||||
testList = new Array(size);
|
||||
testList = [];
|
||||
|
||||
platformBrowserDynamic().bootstrapModule(AppModule).then((ref) => {
|
||||
const injector = ref.injector;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {TreeNode} from '../util';
|
||||
import {TreeNode, newArray} from '../util';
|
||||
|
||||
export class TreeComponent {
|
||||
private _renderNodes: any[];
|
||||
@@ -25,7 +25,7 @@ export class TreeComponent {
|
||||
|
||||
private _create(parentNode: any, dataNode: TreeNode, index: number) {
|
||||
if (!this._renderNodes) {
|
||||
this._renderNodes = new Array(dataNode.transitiveChildCount);
|
||||
this._renderNodes = newArray(dataNode.transitiveChildCount);
|
||||
}
|
||||
|
||||
const span = document.createElement('span');
|
||||
|
||||
@@ -68,3 +68,13 @@ export function flattenTree(node: TreeNode, target: TreeNode[] = []): TreeNode[]
|
||||
}
|
||||
return target;
|
||||
}
|
||||
|
||||
export function newArray<T = any>(size: number): T[];
|
||||
export function newArray<T>(size: number, value: T): T[];
|
||||
export function newArray<T>(size: number, value?: T): T[] {
|
||||
const list: T[] = [];
|
||||
for (let i = 0; i < size; i++) {
|
||||
list.push(value !);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
Reference in New Issue
Block a user