Skip to content

Commit

Permalink
perf(ivy): minimise writes to the lView[BINDING_INDEX] / binding root (
Browse files Browse the repository at this point in the history
…#32263)

This commit removes all the (duplicated) logic of setting lView[BINDING_INDEX]
from `enterView`. `enterView` is on the critcal path perf-wise so we should
avoid having any logic in there and minimise memory read / write.

This simple refactoring in this PR reduces time spent in noop change detection
by ~12% (from ~800ms down to ~700ms on a local machine where measurements were
taken).

PR Close #32263
  • Loading branch information
pkozlowski-opensource authored and atscott committed Aug 26, 2019
1 parent 860b5d0 commit e3422e0
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 9 deletions.
6 changes: 1 addition & 5 deletions packages/core/src/render3/instructions/shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -377,10 +377,7 @@ export function refreshView<T>(
try {
resetPreOrderHookFlags(lView);

// Resetting the bindingIndex of the current LView as the next steps may trigger change
// detection.
lView[BINDING_INDEX] = tView.bindingStartIndex;

setBindingRoot(lView[BINDING_INDEX] = tView.bindingStartIndex);
if (templateFn !== null) {
executeTemplate(lView, templateFn, RenderFlags.Update, context);
}
Expand Down Expand Up @@ -463,7 +460,6 @@ export function refreshView<T>(

} finally {
lView[FLAGS] &= ~(LViewFlags.Dirty | LViewFlags.FirstLViewPass);
lView[BINDING_INDEX] = tView.bindingStartIndex;
leaveView(oldView);
}
}
Expand Down
4 changes: 0 additions & 4 deletions packages/core/src/render3/state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -414,10 +414,6 @@ export function setCurrentQueryIndex(value: number): void {
export function enterView(newView: LView, hostTNode: TElementNode | TViewNode | null): LView {
ngDevMode && assertLViewOrUndefined(newView);
const oldView = lView;
if (newView) {
const tView = newView[TVIEW];
bindingRootIndex = tView.bindingStartIndex;
}

previousOrParentTNode = hostTNode !;
isParent = true;
Expand Down

0 comments on commit e3422e0

Please sign in to comment.