From 457ac3ac46cfb7309bcbe98ebd3b8103da58e265 Mon Sep 17 00:00:00 2001 From: Pawel Kozlowski Date: Mon, 25 Nov 2019 12:30:45 +0100 Subject: [PATCH] perf(ivy): fix creation time micro-benchmarks (#34031) Micro-benchmarks were broken after we've introduced concept of DECLARATION_COMPONENT_VIEW on LView (after this change embedded views must have a pointer to a parent LView). PR Close #34031 --- .../perf/directive_instantiate/index.ts | 15 +++++--- .../render3/perf/element_text_create/index.ts | 37 ++++++++++--------- .../core/test/render3/perf/listeners/index.ts | 14 ++++--- .../test/render3/perf/ng_template/index.ts | 12 ++++-- packages/core/test/render3/perf/setup.ts | 3 +- 5 files changed, 48 insertions(+), 33 deletions(-) diff --git a/packages/core/test/render3/perf/directive_instantiate/index.ts b/packages/core/test/render3/perf/directive_instantiate/index.ts index 44b010307b..ea3d5263c5 100644 --- a/packages/core/test/render3/perf/directive_instantiate/index.ts +++ b/packages/core/test/render3/perf/directive_instantiate/index.ts @@ -5,9 +5,10 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import {TViewType} from '@angular/core/src/render3/interfaces/view'; +import {LViewFlags, TViewType} from '@angular/core/src/render3/interfaces/view'; + import {ɵɵdefineDirective, ɵɵelementEnd, ɵɵelementStart, ɵɵtext} from '../../../../src/render3/index'; -import {createTNode, createTView} from '../../../../src/render3/instructions/shared'; +import {createLView, createTNode, createTView} from '../../../../src/render3/instructions/shared'; import {RenderFlags} from '../../../../src/render3/interfaces/definition'; import {TNodeType, TViewNode} from '../../../../src/render3/interfaces/node'; import {createBenchmark} from '../micro_bench'; @@ -73,13 +74,17 @@ function testTemplate(rf: RenderFlags, ctx: any) { } } +const rootLView = createLView( + null, createTView(TViewType.Root, -1, null, 0, 0, null, null, null, null, null), {}, + LViewFlags.IsRoot, null, null); + const viewTNode = createTNode(null !, null, TNodeType.View, -1, null, null) as TViewNode; const embeddedTView = createTView( TViewType.Embedded, -1, testTemplate, 21, 10, [Tooltip.ɵdir], null, null, null, [['position', 'top', 3, 'tooltip']]); -// create view once so we don't profile first template pass -createAndRenderLView(null, embeddedTView, viewTNode); +// create view once so we don't profile the first create pass +createAndRenderLView(rootLView, embeddedTView, viewTNode); // scenario to benchmark const directiveInstantiate = createBenchmark('directive instantiate'); @@ -87,7 +92,7 @@ const createTime = directiveInstantiate('create'); console.profile('directive_instantiate'); while (createTime()) { - createAndRenderLView(null, embeddedTView, viewTNode); + createAndRenderLView(rootLView, embeddedTView, viewTNode); } console.profileEnd(); diff --git a/packages/core/test/render3/perf/element_text_create/index.ts b/packages/core/test/render3/perf/element_text_create/index.ts index 563fd8e4aa..65cc7ec7ba 100644 --- a/packages/core/test/render3/perf/element_text_create/index.ts +++ b/packages/core/test/render3/perf/element_text_create/index.ts @@ -5,28 +5,27 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import {TViewType} from '@angular/core/src/render3/interfaces/view'; import {ɵɵelementEnd, ɵɵelementStart} from '../../../../src/render3/instructions/element'; -import {createTNode, createTView} from '../../../../src/render3/instructions/shared'; +import {createLView, createTNode, createTView} from '../../../../src/render3/instructions/shared'; import {ɵɵtext} from '../../../../src/render3/instructions/text'; import {RenderFlags} from '../../../../src/render3/interfaces/definition'; import {TNodeType, TViewNode} from '../../../../src/render3/interfaces/node'; +import {LViewFlags, TViewType} from '../../../../src/render3/interfaces/view'; import {createBenchmark} from '../micro_bench'; import {createAndRenderLView} from '../setup'; `
- - - - - - - - - - -
-`; + +