From 45d98e7ca5accf918e2602cbc17805e11e18896b Mon Sep 17 00:00:00 2001 From: Andrew Kushnir Date: Tue, 15 Feb 2022 11:47:09 -0800 Subject: [PATCH] perf(core): make `IterableDiffers` and `KeyValueDiffers` tree-shakable (#45094) This commit removed references to the `IterableDiffers` and `KeyValueDiffers` classes from the `ApplicationModule`, which effectively make them tree-shakable. Both classes have `prov` static field with the right setup, so they'll be properly initialized when referenced. PR Close #45094 --- .../size-tracking/integration-payloads.json | 10 ++-- packages/core/src/application_module.ts | 11 ---- .../animations/bundle.golden_symbols.json | 60 ------------------- .../forms_reactive/bundle.golden_symbols.json | 27 --------- .../bundle.golden_symbols.json | 27 --------- .../router/bundle.golden_symbols.json | 54 ----------------- 6 files changed, 5 insertions(+), 184 deletions(-) diff --git a/goldens/size-tracking/integration-payloads.json b/goldens/size-tracking/integration-payloads.json index 917002f9ed1..b75605be034 100644 --- a/goldens/size-tracking/integration-payloads.json +++ b/goldens/size-tracking/integration-payloads.json @@ -3,7 +3,7 @@ "master": { "uncompressed": { "runtime": 1083, - "main": 139416, + "main": 127944, "polyfills": 37226 } } @@ -24,7 +24,7 @@ "master": { "uncompressed": { "runtime": 1105, - "main": 145132, + "main": 133608, "polyfills": 37248 } } @@ -33,7 +33,7 @@ "master": { "uncompressed": { "runtime": 929, - "main": 137712, + "main": 126275, "polyfills": 37933 } } @@ -52,7 +52,7 @@ "master": { "uncompressed": { "runtime": 1063, - "main": 163160, + "main": 159637, "polyfills": 36975 } } @@ -61,7 +61,7 @@ "master": { "uncompressed": { "runtime": 1070, - "main": 171374, + "main": 159755, "polyfills": 37242 } } diff --git a/packages/core/src/application_module.ts b/packages/core/src/application_module.ts index c4db751c3a9..ec6abbbb067 100644 --- a/packages/core/src/application_module.ts +++ b/packages/core/src/application_module.ts @@ -9,7 +9,6 @@ import {APP_INITIALIZER, ApplicationInitStatus} from './application_init'; import {ApplicationRef} from './application_ref'; import {APP_ID_RANDOM_PROVIDER} from './application_tokens'; -import {defaultIterableDiffers, defaultKeyValueDiffers, IterableDiffers, KeyValueDiffers} from './change_detection/change_detection'; import {Injector, StaticProvider} from './di'; import {Inject, Optional, SkipSelf} from './di/metadata'; import {ErrorHandler} from './error_handler'; @@ -23,14 +22,6 @@ import {NgZone} from './zone'; declare const $localize: {locale?: string}; -export function _iterableDiffersFactory() { - return defaultIterableDiffers; -} - -export function _keyValueDiffersFactory() { - return defaultKeyValueDiffers; -} - export function _localeFactory(locale?: string): string { return locale || getGlobalLocale(); } @@ -79,8 +70,6 @@ export const APPLICATION_MODULE_PROVIDERS: StaticProvider[] = [ }, {provide: Compiler, useClass: Compiler, deps: []}, APP_ID_RANDOM_PROVIDER, - {provide: IterableDiffers, useFactory: _iterableDiffersFactory, deps: []}, - {provide: KeyValueDiffers, useFactory: _keyValueDiffersFactory, deps: []}, { provide: LOCALE_ID, useFactory: _localeFactory, diff --git a/packages/core/test/bundling/animations/bundle.golden_symbols.json b/packages/core/test/bundling/animations/bundle.golden_symbols.json index 11c59f8e0c4..5ad9cf50796 100644 --- a/packages/core/test/bundling/animations/bundle.golden_symbols.json +++ b/packages/core/test/bundling/animations/bundle.golden_symbols.json @@ -173,18 +173,6 @@ { "name": "DefaultDomRenderer2" }, - { - "name": "DefaultIterableDiffer" - }, - { - "name": "DefaultIterableDifferFactory" - }, - { - "name": "DefaultKeyValueDiffer" - }, - { - "name": "DefaultKeyValueDifferFactory" - }, { "name": "DomEventsPlugin" }, @@ -260,21 +248,9 @@ { "name": "Injector" }, - { - "name": "IterableChangeRecord_" - }, - { - "name": "IterableDiffers" - }, { "name": "KeyEventsPlugin" }, - { - "name": "KeyValueChangeRecord_" - }, - { - "name": "KeyValueDiffers" - }, { "name": "LEAVE_TOKEN_REGEX" }, @@ -545,9 +521,6 @@ { "name": "_DOM" }, - { - "name": "_DuplicateMap" - }, { "name": "_IS_WEBKIT" }, @@ -608,9 +581,6 @@ { "name": "_renderCompCount" }, - { - "name": "_symbolIterator" - }, { "name": "_testabilityGetter" }, @@ -779,18 +749,6 @@ { "name": "defaultErrorLogger" }, - { - "name": "defaultIterableDiffers" - }, - { - "name": "defaultIterableDiffersFactory" - }, - { - "name": "defaultKeyValueDiffers" - }, - { - "name": "defaultKeyValueDiffersFactory" - }, { "name": "defaultScheduler" }, @@ -965,9 +923,6 @@ { "name": "getPlatform" }, - { - "name": "getPreviousIndex" - }, { "name": "getProjectionNodes" }, @@ -980,9 +935,6 @@ { "name": "getStyleAttributeString" }, - { - "name": "getSymbolIterator" - }, { "name": "getSymbolIterator2" }, @@ -1088,18 +1040,12 @@ { "name": "isInlineTemplate" }, - { - "name": "isJsObject" - }, { "name": "isLContainer" }, { "name": "isLView" }, - { - "name": "isListLikeIterable" - }, { "name": "isNode" }, @@ -1139,9 +1085,6 @@ { "name": "iteratorToArray" }, - { - "name": "keyValDiff" - }, { "name": "leaveDI" }, @@ -1421,9 +1364,6 @@ { "name": "toRefArray" }, - { - "name": "trackByIdentity" - }, { "name": "transition" }, diff --git a/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json b/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json index afe8691c865..6908726d420 100644 --- a/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json +++ b/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json @@ -137,12 +137,6 @@ { "name": "DefaultIterableDifferFactory" }, - { - "name": "DefaultKeyValueDiffer" - }, - { - "name": "DefaultKeyValueDifferFactory" - }, { "name": "DefaultValueAccessor" }, @@ -242,12 +236,6 @@ { "name": "KeyEventsPlugin" }, - { - "name": "KeyValueChangeRecord_" - }, - { - "name": "KeyValueDiffers" - }, { "name": "LOCALE_DATA" }, @@ -767,18 +755,9 @@ { "name": "defaultErrorLogger" }, - { - "name": "defaultIterableDiffers" - }, { "name": "defaultIterableDiffersFactory" }, - { - "name": "defaultKeyValueDiffers" - }, - { - "name": "defaultKeyValueDiffersFactory" - }, { "name": "defaultScheduler" }, @@ -1169,9 +1148,6 @@ { "name": "isInlineTemplate" }, - { - "name": "isJsObject" - }, { "name": "isLContainer" }, @@ -1226,9 +1202,6 @@ { "name": "iterator" }, - { - "name": "keyValDiff" - }, { "name": "keyValueArrayGet" }, diff --git a/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json b/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json index f41f7ef9744..d35fd0fc03f 100644 --- a/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json +++ b/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json @@ -143,12 +143,6 @@ { "name": "DefaultIterableDifferFactory" }, - { - "name": "DefaultKeyValueDiffer" - }, - { - "name": "DefaultKeyValueDifferFactory" - }, { "name": "DefaultValueAccessor" }, @@ -233,12 +227,6 @@ { "name": "KeyEventsPlugin" }, - { - "name": "KeyValueChangeRecord_" - }, - { - "name": "KeyValueDiffers" - }, { "name": "LOCALE_DATA" }, @@ -749,18 +737,9 @@ { "name": "defaultErrorLogger" }, - { - "name": "defaultIterableDiffers" - }, { "name": "defaultIterableDiffersFactory" }, - { - "name": "defaultKeyValueDiffers" - }, - { - "name": "defaultKeyValueDiffersFactory" - }, { "name": "defaultScheduler" }, @@ -1136,9 +1115,6 @@ { "name": "isInlineTemplate" }, - { - "name": "isJsObject" - }, { "name": "isLContainer" }, @@ -1193,9 +1169,6 @@ { "name": "iterator" }, - { - "name": "keyValDiff" - }, { "name": "keyValueArrayGet" }, diff --git a/packages/core/test/bundling/router/bundle.golden_symbols.json b/packages/core/test/bundling/router/bundle.golden_symbols.json index 7ec67915e63..c48583208ad 100644 --- a/packages/core/test/bundling/router/bundle.golden_symbols.json +++ b/packages/core/test/bundling/router/bundle.golden_symbols.json @@ -158,18 +158,6 @@ { "name": "DefaultIfEmptySubscriber" }, - { - "name": "DefaultIterableDiffer" - }, - { - "name": "DefaultIterableDifferFactory" - }, - { - "name": "DefaultKeyValueDiffer" - }, - { - "name": "DefaultKeyValueDifferFactory" - }, { "name": "DefaultTitleStrategy" }, @@ -269,21 +257,9 @@ { "name": "ItemComponent" }, - { - "name": "IterableChangeRecord_" - }, - { - "name": "IterableDiffers" - }, { "name": "KeyEventsPlugin" }, - { - "name": "KeyValueChangeRecord_" - }, - { - "name": "KeyValueDiffers" - }, { "name": "LOCALE_DATA" }, @@ -773,9 +749,6 @@ { "name": "_DOM" }, - { - "name": "_DuplicateMap" - }, { "name": "_NullComponentFactoryResolver" }, @@ -1031,18 +1004,6 @@ { "name": "defaultIfEmpty" }, - { - "name": "defaultIterableDiffers" - }, - { - "name": "defaultIterableDiffersFactory" - }, - { - "name": "defaultKeyValueDiffers" - }, - { - "name": "defaultKeyValueDiffersFactory" - }, { "name": "defaultMalformedUriErrorHandler" }, @@ -1331,9 +1292,6 @@ { "name": "getPlatform" }, - { - "name": "getPreviousIndex" - }, { "name": "getProjectionNodes" }, @@ -1496,18 +1454,12 @@ { "name": "isInlineTemplate" }, - { - "name": "isJsObject" - }, { "name": "isLContainer" }, { "name": "isLView" }, - { - "name": "isListLikeIterable" - }, { "name": "isMatrixParams" }, @@ -1556,9 +1508,6 @@ { "name": "joinWithSlash" }, - { - "name": "keyValDiff" - }, { "name": "last2" }, @@ -1943,9 +1892,6 @@ { "name": "toRefArray" }, - { - "name": "trackByIdentity" - }, { "name": "tree" },