Skip to content

Commit a73bb0e

Browse files
committed
Introduce a faster version of the addProperties function (#28969)
## Summary This PR introduces a faster version of the `addProperties` function. This new function is basically the `diffProperties` with `prevProps` set to `null`, propagated constants, and all the unreachable code paths collapsed. ## How did you test this change? I've tested this change with [the benchmark app](https://github.com/react-native-community/RNNewArchitectureApp/tree/new-architecture-benchmarks) and got ~4.4% improvement in the view creation time. DiffTrain build for [73bcdfb](73bcdfb)
1 parent cc2fb92 commit a73bb0e

9 files changed

+25
-17
lines changed

compiled/facebook-www/REVISION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
c7b1ae5a9ed58abece101d09c47ddd1e0b181fe2
1+
73bcdfbae57545aa8f88ecdf67426275610b5573

compiled/facebook-www/ReactART-dev.classic.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ function _assertThisInitialized(self) {
6363
return self;
6464
}
6565

66-
var ReactVersion = '19.0.0-www-classic-f53782f7';
66+
var ReactVersion = '19.0.0-www-classic-0ce7839f';
6767

6868
var LegacyRoot = 0;
6969
var ConcurrentRoot = 1;
@@ -160,7 +160,8 @@ var enableDebugTracing = dynamicFeatureFlags.enableDebugTracing,
160160
enableRenderableContext = dynamicFeatureFlags.enableRenderableContext,
161161
enableRefAsProp = dynamicFeatureFlags.enableRefAsProp,
162162
disableDefaultPropsExceptForClasses = dynamicFeatureFlags.disableDefaultPropsExceptForClasses,
163-
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache; // On WWW, false is used for a new modern build.
163+
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache;
164+
// On WWW, false is used for a new modern build.
164165
var enableProfilerTimer = true;
165166
var enableProfilerCommitHooks = true;
166167
var enableProfilerNestedUpdatePhase = true;

compiled/facebook-www/ReactART-dev.modern.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ function _assertThisInitialized(self) {
6363
return self;
6464
}
6565

66-
var ReactVersion = '19.0.0-www-modern-b38d5faf';
66+
var ReactVersion = '19.0.0-www-modern-3acd2c75';
6767

6868
var LegacyRoot = 0;
6969
var ConcurrentRoot = 1;
@@ -160,7 +160,8 @@ var enableDebugTracing = dynamicFeatureFlags.enableDebugTracing,
160160
enableRenderableContext = dynamicFeatureFlags.enableRenderableContext,
161161
enableRefAsProp = dynamicFeatureFlags.enableRefAsProp,
162162
disableDefaultPropsExceptForClasses = dynamicFeatureFlags.disableDefaultPropsExceptForClasses,
163-
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache; // On WWW, true is used for a new modern build.
163+
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache;
164+
// On WWW, true is used for a new modern build.
164165
var enableProfilerTimer = true;
165166
var enableProfilerCommitHooks = true;
166167
var enableProfilerNestedUpdatePhase = true;

compiled/facebook-www/ReactDOM-dev.classic.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,8 @@ var enableTrustedTypesIntegration = dynamicFeatureFlags.enableTrustedTypesIntegr
125125
enableRefAsProp = dynamicFeatureFlags.enableRefAsProp,
126126
favorSafetyOverHydrationPerf = dynamicFeatureFlags.favorSafetyOverHydrationPerf,
127127
disableDefaultPropsExceptForClasses = dynamicFeatureFlags.disableDefaultPropsExceptForClasses,
128-
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache; // On WWW, false is used for a new modern build.
128+
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache;
129+
// On WWW, false is used for a new modern build.
129130
var enableProfilerTimer = true;
130131
var enableProfilerCommitHooks = true;
131132
var enableProfilerNestedUpdatePhase = true;
@@ -30840,7 +30841,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
3084030841
return root;
3084130842
}
3084230843

30843-
var ReactVersion = '19.0.0-www-classic-512ac9b4';
30844+
var ReactVersion = '19.0.0-www-classic-c1bcb6b8';
3084430845

3084530846
function createPortal$1(children, containerInfo, // TODO: figure out the API for cross-renderer implementation.
3084630847
implementation) {

compiled/facebook-www/ReactDOM-dev.modern.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ var enableTrustedTypesIntegration = dynamicFeatureFlags.enableTrustedTypesIntegr
122122
enableRefAsProp = dynamicFeatureFlags.enableRefAsProp,
123123
favorSafetyOverHydrationPerf = dynamicFeatureFlags.favorSafetyOverHydrationPerf,
124124
disableDefaultPropsExceptForClasses = dynamicFeatureFlags.disableDefaultPropsExceptForClasses,
125-
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache; // On WWW, true is used for a new modern build.
125+
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache;
126+
// On WWW, true is used for a new modern build.
126127
var enableProfilerTimer = true;
127128
var enableProfilerCommitHooks = true;
128129
var enableProfilerNestedUpdatePhase = true;
@@ -30015,7 +30016,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
3001530016
return root;
3001630017
}
3001730018

30018-
var ReactVersion = '19.0.0-www-modern-5ee2f667';
30019+
var ReactVersion = '19.0.0-www-modern-2f73daed';
3001930020

3002030021
function createPortal$1(children, containerInfo, // TODO: figure out the API for cross-renderer implementation.
3002130022
implementation) {

compiled/facebook-www/ReactDOMTesting-dev.classic.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ var enableTrustedTypesIntegration = dynamicFeatureFlags.enableTrustedTypesIntegr
116116
enableRefAsProp = dynamicFeatureFlags.enableRefAsProp,
117117
favorSafetyOverHydrationPerf = dynamicFeatureFlags.favorSafetyOverHydrationPerf,
118118
disableDefaultPropsExceptForClasses = dynamicFeatureFlags.disableDefaultPropsExceptForClasses,
119-
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache; // On WWW, false is used for a new modern build.
119+
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache;
120+
// On WWW, false is used for a new modern build.
120121
var enableProfilerTimer = true;
121122
var enableProfilerCommitHooks = true;
122123
var enableProfilerNestedUpdatePhase = true;
@@ -31403,7 +31404,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
3140331404
return root;
3140431405
}
3140531406

31406-
var ReactVersion = '19.0.0-www-classic-af3b0dd2';
31407+
var ReactVersion = '19.0.0-www-classic-547fcced';
3140731408

3140831409
function createPortal$1(children, containerInfo, // TODO: figure out the API for cross-renderer implementation.
3140931410
implementation) {

compiled/facebook-www/ReactDOMTesting-dev.modern.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ var enableTrustedTypesIntegration = dynamicFeatureFlags.enableTrustedTypesIntegr
113113
enableRefAsProp = dynamicFeatureFlags.enableRefAsProp,
114114
favorSafetyOverHydrationPerf = dynamicFeatureFlags.favorSafetyOverHydrationPerf,
115115
disableDefaultPropsExceptForClasses = dynamicFeatureFlags.disableDefaultPropsExceptForClasses,
116-
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache; // On WWW, true is used for a new modern build.
116+
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache;
117+
// On WWW, true is used for a new modern build.
117118
var enableProfilerTimer = true;
118119
var enableProfilerCommitHooks = true;
119120
var enableProfilerNestedUpdatePhase = true;
@@ -30578,7 +30579,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
3057830579
return root;
3057930580
}
3058030581

30581-
var ReactVersion = '19.0.0-www-modern-1407495b';
30582+
var ReactVersion = '19.0.0-www-modern-826b7a52';
3058230583

3058330584
function createPortal$1(children, containerInfo, // TODO: figure out the API for cross-renderer implementation.
3058430585
implementation) {

compiled/facebook-www/ReactReconciler-dev.classic.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ var enableDebugTracing = dynamicFeatureFlags.enableDebugTracing,
116116
enableRefAsProp = dynamicFeatureFlags.enableRefAsProp,
117117
favorSafetyOverHydrationPerf = dynamicFeatureFlags.favorSafetyOverHydrationPerf,
118118
disableDefaultPropsExceptForClasses = dynamicFeatureFlags.disableDefaultPropsExceptForClasses,
119-
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache; // On WWW, false is used for a new modern build.
119+
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache;
120+
// On WWW, false is used for a new modern build.
120121
var enableProfilerTimer = true;
121122
var enableProfilerCommitHooks = true;
122123
var enableProfilerNestedUpdatePhase = true;
@@ -28659,7 +28660,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
2865928660
return root;
2866028661
}
2866128662

28662-
var ReactVersion = '19.0.0-www-classic-0492085a';
28663+
var ReactVersion = '19.0.0-www-classic-6ec34ee9';
2866328664

2866428665
/*
2866528666
* The `'' + value` pattern (used in perf-sensitive code) throws for Symbol

compiled/facebook-www/ReactReconciler-dev.modern.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ var enableDebugTracing = dynamicFeatureFlags.enableDebugTracing,
116116
enableRefAsProp = dynamicFeatureFlags.enableRefAsProp,
117117
favorSafetyOverHydrationPerf = dynamicFeatureFlags.favorSafetyOverHydrationPerf,
118118
disableDefaultPropsExceptForClasses = dynamicFeatureFlags.disableDefaultPropsExceptForClasses,
119-
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache; // On WWW, true is used for a new modern build.
119+
enableNoCloningMemoCache = dynamicFeatureFlags.enableNoCloningMemoCache;
120+
// On WWW, true is used for a new modern build.
120121
var enableProfilerTimer = true;
121122
var enableProfilerCommitHooks = true;
122123
var enableProfilerNestedUpdatePhase = true;
@@ -27925,7 +27926,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
2792527926
return root;
2792627927
}
2792727928

27928-
var ReactVersion = '19.0.0-www-modern-30613c5e';
27929+
var ReactVersion = '19.0.0-www-modern-e8748e87';
2792927930

2793027931
/*
2793127932
* The `'' + value` pattern (used in perf-sensitive code) throws for Symbol

0 commit comments

Comments
 (0)