Skip to content

Commit b101334

Browse files
committed
[Perf Tracks]: Clear potentially large measures (facebook#34803)
Fixes facebook#34770. We need to clear measures at some point, otherwise all these copies of props that we end up recording will allocate too much memory in Chromium. This adds `performance.clearMeasures(...)` calls to such cases in DEV. Validated that entries are still shown on Performance panel timeline. DiffTrain build for [b9ec735](facebook@b9ec735)
1 parent d2c3fcd commit b101334

34 files changed

+1130
-988
lines changed

compiled/facebook-www/REVISION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1d68bce19c9409ed70604d1d16b70b68ce71dc4a
1+
b9ec735de248f46da181afbc12aa906422be0dba
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1d68bce19c9409ed70604d1d16b70b68ce71dc4a
1+
b9ec735de248f46da181afbc12aa906422be0dba

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1460,7 +1460,7 @@ __DEV__ &&
14601460
exports.useTransition = function () {
14611461
return resolveDispatcher().useTransition();
14621462
};
1463-
exports.version = "19.3.0-www-classic-1d68bce1-20251012";
1463+
exports.version = "19.3.0-www-classic-b9ec735d-20251013";
14641464
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
14651465
"function" ===
14661466
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1460,7 +1460,7 @@ __DEV__ &&
14601460
exports.useTransition = function () {
14611461
return resolveDispatcher().useTransition();
14621462
};
1463-
exports.version = "19.3.0-www-modern-1d68bce1-20251012";
1463+
exports.version = "19.3.0-www-modern-b9ec735d-20251013";
14641464
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
14651465
"function" ===
14661466
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

compiled/facebook-www/React-prod.classic.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -606,4 +606,4 @@ exports.useSyncExternalStore = function (
606606
exports.useTransition = function () {
607607
return ReactSharedInternals.H.useTransition();
608608
};
609-
exports.version = "19.3.0-www-classic-1d68bce1-20251012";
609+
exports.version = "19.3.0-www-classic-b9ec735d-20251013";

compiled/facebook-www/React-prod.modern.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -606,4 +606,4 @@ exports.useSyncExternalStore = function (
606606
exports.useTransition = function () {
607607
return ReactSharedInternals.H.useTransition();
608608
};
609-
exports.version = "19.3.0-www-modern-1d68bce1-20251012";
609+
exports.version = "19.3.0-www-modern-b9ec735d-20251013";

compiled/facebook-www/React-profiling.classic.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ exports.useSyncExternalStore = function (
610610
exports.useTransition = function () {
611611
return ReactSharedInternals.H.useTransition();
612612
};
613-
exports.version = "19.3.0-www-classic-1d68bce1-20251012";
613+
exports.version = "19.3.0-www-classic-b9ec735d-20251013";
614614
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
615615
"function" ===
616616
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

compiled/facebook-www/React-profiling.modern.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ exports.useSyncExternalStore = function (
610610
exports.useTransition = function () {
611611
return ReactSharedInternals.H.useTransition();
612612
};
613-
exports.version = "19.3.0-www-modern-1d68bce1-20251012";
613+
exports.version = "19.3.0-www-modern-b9ec735d-20251013";
614614
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
615615
"function" ===
616616
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

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

Lines changed: 75 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1495,7 +1495,8 @@ __DEV__ &&
14951495
reusableComponentOptions
14961496
)
14971497
)
1498-
: performance.measure(trigger, reusableComponentOptions));
1498+
: performance.measure(trigger, reusableComponentOptions),
1499+
performance.clearMeasures(trigger));
14991500
}
15001501
function logComponentReappeared(fiber, startTime, endTime) {
15011502
logComponentTrigger(fiber, startTime, endTime, "Reconnect");
@@ -1514,7 +1515,7 @@ __DEV__ &&
15141515
if (null === alternate || alternate.child !== fiber.child)
15151516
for (var child = fiber.child; null !== child; child = child.sibling)
15161517
selfTime -= child.actualDuration;
1517-
wasHydrated =
1518+
selfTime =
15181519
0.5 > selfTime
15191520
? wasHydrated
15201521
? "tertiary-light"
@@ -1529,54 +1530,73 @@ __DEV__ &&
15291530
: "primary-dark"
15301531
: "error";
15311532
var props = fiber.memoizedProps;
1532-
selfTime = fiber._debugTask;
1533+
wasHydrated = fiber._debugTask;
15331534
null !== props &&
15341535
null !== alternate &&
15351536
alternate.memoizedProps !== props
1536-
? ((child = [resuableChangedPropsEntry]),
1537+
? ((child = [reusableChangedPropsEntry]),
15371538
(props = addObjectDiffToProperties(
15381539
alternate.memoizedProps,
15391540
props,
15401541
child,
15411542
0
15421543
)),
1543-
1 < child.length &&
1544-
(props &&
1545-
!alreadyWarnedForDeepEquality &&
1546-
0 === (alternate.lanes & committedLanes) &&
1547-
100 < fiber.actualDuration
1548-
? ((alreadyWarnedForDeepEquality = !0),
1549-
(child[0] = reusableDeeplyEqualPropsEntry),
1550-
(reusableComponentDevToolDetails.color = "warning"),
1551-
(reusableComponentDevToolDetails.tooltipText =
1552-
"This component received deeply equal props. It might benefit from useMemo or the React Compiler in its owner."))
1553-
: ((reusableComponentDevToolDetails.color = wasHydrated),
1554-
(reusableComponentDevToolDetails.tooltipText = name)),
1555-
(reusableComponentDevToolDetails.properties = child),
1556-
(reusableComponentOptions.start = startTime),
1557-
(reusableComponentOptions.end = endTime),
1558-
null != selfTime
1559-
? selfTime.run(
1560-
performance.measure.bind(
1561-
performance,
1562-
"\u200b" + name,
1563-
reusableComponentOptions
1544+
1 < child.length
1545+
? (props &&
1546+
!alreadyWarnedForDeepEquality &&
1547+
0 === (alternate.lanes & committedLanes) &&
1548+
100 < fiber.actualDuration
1549+
? ((alreadyWarnedForDeepEquality = !0),
1550+
(child[0] = reusableDeeplyEqualPropsEntry),
1551+
(reusableComponentDevToolDetails.color = "warning"),
1552+
(reusableComponentDevToolDetails.tooltipText =
1553+
"This component received deeply equal props. It might benefit from useMemo or the React Compiler in its owner."))
1554+
: ((reusableComponentDevToolDetails.color = selfTime),
1555+
(reusableComponentDevToolDetails.tooltipText = name)),
1556+
(reusableComponentDevToolDetails.properties = child),
1557+
(reusableComponentOptions.start = startTime),
1558+
(reusableComponentOptions.end = endTime),
1559+
(fiber = "\u200b" + name),
1560+
null != wasHydrated
1561+
? wasHydrated.run(
1562+
performance.measure.bind(
1563+
performance,
1564+
fiber,
1565+
reusableComponentOptions
1566+
)
1567+
)
1568+
: performance.measure(fiber, reusableComponentOptions),
1569+
performance.clearMeasures(fiber))
1570+
: null != wasHydrated
1571+
? wasHydrated.run(
1572+
console.timeStamp.bind(
1573+
console,
1574+
name,
1575+
startTime,
1576+
endTime,
1577+
"Components \u269b",
1578+
void 0,
1579+
selfTime
15641580
)
15651581
)
1566-
: performance.measure(
1567-
"\u200b" + name,
1568-
reusableComponentOptions
1569-
)))
1570-
: null != selfTime
1571-
? selfTime.run(
1582+
: console.timeStamp(
1583+
name,
1584+
startTime,
1585+
endTime,
1586+
"Components \u269b",
1587+
void 0,
1588+
selfTime
1589+
))
1590+
: null != wasHydrated
1591+
? wasHydrated.run(
15721592
console.timeStamp.bind(
15731593
console,
15741594
name,
15751595
startTime,
15761596
endTime,
15771597
"Components \u269b",
15781598
void 0,
1579-
wasHydrated
1599+
selfTime
15801600
)
15811601
)
15821602
: console.timeStamp(
@@ -1585,7 +1605,7 @@ __DEV__ &&
15851605
endTime,
15861606
"Components \u269b",
15871607
void 0,
1588-
wasHydrated
1608+
selfTime
15891609
);
15901610
}
15911611
}
@@ -1632,11 +1652,11 @@ __DEV__ &&
16321652
}
16331653
}
16341654
};
1655+
name = "\u200b" + name;
16351656
debugTask
1636-
? debugTask.run(
1637-
performance.measure.bind(performance, "\u200b" + name, fiber)
1638-
)
1639-
: performance.measure("\u200b" + name, fiber);
1657+
? debugTask.run(performance.measure.bind(performance, name, fiber))
1658+
: performance.measure(name, fiber);
1659+
performance.clearMeasures(name);
16401660
}
16411661
}
16421662
}
@@ -1673,15 +1693,14 @@ __DEV__ &&
16731693
}
16741694
}
16751695
};
1676-
(fiber = fiber._debugTask)
1696+
fiber = fiber._debugTask;
1697+
endTime = "\u200b" + name;
1698+
fiber
16771699
? fiber.run(
1678-
performance.measure.bind(
1679-
performance,
1680-
"\u200b" + name,
1681-
startTime
1682-
)
1700+
performance.measure.bind(performance, endTime, startTime)
16831701
)
1684-
: performance.measure("\u200b" + name, startTime);
1702+
: performance.measure(endTime, startTime);
1703+
performance.clearMeasures(endTime);
16851704
}
16861705
}
16871706
} else
@@ -1842,6 +1861,7 @@ __DEV__ &&
18421861
performance.measure.bind(performance, "Recovered", startTime)
18431862
)
18441863
: performance.measure("Recovered", startTime);
1864+
performance.clearMeasures("Recovered");
18451865
}
18461866
}
18471867
function logErroredRenderPhase(startTime, endTime, lanes, debugTask) {
@@ -1925,6 +1945,7 @@ __DEV__ &&
19251945
performance.measure.bind(performance, "Errored", startTime)
19261946
)
19271947
: performance.measure("Errored", startTime);
1948+
performance.clearMeasures("Errored");
19281949
}
19291950
}
19301951
function logCommitPhase(
@@ -11984,6 +12005,8 @@ __DEV__ &&
1198412005
}
1198512006
switch (finishedWork.tag) {
1198612007
case 0:
12008+
case 11:
12009+
case 15:
1198712010
if (
1198812011
0 !== (flags & 4) &&
1198912012
((finishedWork = finishedWork.updateQueue),
@@ -11999,9 +12022,6 @@ __DEV__ &&
1199912022
(current = finishedWork[isViewTransitionEligible]),
1200012023
(current.ref.impl = current.nextImpl);
1200112024
break;
12002-
case 11:
12003-
case 15:
12004-
break;
1200512025
case 1:
1200612026
0 !== (flags & 1024) &&
1200712027
null !== current &&
@@ -15674,10 +15694,8 @@ __DEV__ &&
1567415694
previousRenderStartTime
1567515695
)
1567615696
)
15677-
: performance.measure(
15678-
isSpawnedUpdate,
15679-
previousRenderStartTime
15680-
));
15697+
: performance.measure(isSpawnedUpdate, previousRenderStartTime),
15698+
performance.clearMeasures(isSpawnedUpdate));
1568115699
}
1568215700
blockingUpdateTime = -1.1;
1568315701
blockingUpdateType = 0;
@@ -15816,7 +15834,8 @@ __DEV__ &&
1581615834
previousRenderStartTime
1581715835
)
1581815836
)
15819-
: performance.measure(debugTask, previousRenderStartTime))),
15837+
: performance.measure(debugTask, previousRenderStartTime),
15838+
performance.clearMeasures(debugTask))),
1582015839
(transitionUpdateTime = transitionStartTime = -1.1),
1582115840
(transitionUpdateType = 0),
1582215841
(transitionSuspendedTime = -1.1),
@@ -18284,7 +18303,7 @@ __DEV__ &&
1828418303
end: -0,
1828518304
detail: { devtools: reusableComponentDevToolDetails }
1828618305
},
18287-
resuableChangedPropsEntry = ["Changed Props", ""],
18306+
reusableChangedPropsEntry = ["Changed Props", ""],
1828818307
reusableDeeplyEqualPropsEntry = [
1828918308
"Changed Props",
1829018309
"This component received deeply equal props. It might benefit from useMemo or the React Compiler in its owner."
@@ -20352,10 +20371,10 @@ __DEV__ &&
2035220371
(function () {
2035320372
var internals = {
2035420373
bundleType: 1,
20355-
version: "19.3.0-www-classic-1d68bce1-20251012",
20374+
version: "19.3.0-www-classic-b9ec735d-20251013",
2035620375
rendererPackageName: "react-art",
2035720376
currentDispatcherRef: ReactSharedInternals,
20358-
reconcilerVersion: "19.3.0-www-classic-1d68bce1-20251012"
20377+
reconcilerVersion: "19.3.0-www-classic-b9ec735d-20251013"
2035920378
};
2036020379
internals.overrideHookState = overrideHookState;
2036120380
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -20390,7 +20409,7 @@ __DEV__ &&
2039020409
exports.Shape = Shape;
2039120410
exports.Surface = Surface;
2039220411
exports.Text = Text;
20393-
exports.version = "19.3.0-www-classic-1d68bce1-20251012";
20412+
exports.version = "19.3.0-www-classic-b9ec735d-20251013";
2039420413
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
2039520414
"function" ===
2039620415
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

0 commit comments

Comments
 (0)