From 08aab2b4e1cfc0202dca544d22bc2cde82be7b39 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Fri, 17 Dec 2021 09:59:43 -0800 Subject: [PATCH] Add logging of statistics of Fabric commits Summary: This diff adds extra logging to track how long does it take to exeucte different stages of the fabric commit changelog: [internal] internal Reviewed By: philIip Differential Revision: D33183070 fbshipit-source-id: 69e31bef69c9d9ec57dc7e00e4c36e278eb30cb6 --- .../react/fabric/FabricUIManager.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java index 290c3b6048b..6c18ebf5de0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java @@ -716,6 +716,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { // When Binding.cpp calls scheduleMountItems during a commit phase, it always calls with // a BatchMountItem. No other sites call into this with a BatchMountItem, and Binding.cpp only // calls scheduleMountItems with a BatchMountItem. + long scheduleMountItemStartTime = SystemClock.uptimeMillis(); boolean isBatchMountItem = mountItem instanceof IntBufferBatchMountItem; boolean shouldSchedule = (isBatchMountItem && ((IntBufferBatchMountItem) mountItem).shouldSchedule()) @@ -731,7 +732,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { mCommitStartTime = commitStartTime; mLayoutTime = layoutEndTime - layoutStartTime; mFinishTransactionCPPTime = finishTransactionEndTime - finishTransactionStartTime; - mFinishTransactionTime = SystemClock.uptimeMillis() - finishTransactionStartTime; + mFinishTransactionTime = scheduleMountItemStartTime - finishTransactionStartTime; mDispatchViewUpdatesTime = SystemClock.uptimeMillis(); } @@ -766,6 +767,23 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { ReactMarker.logFabricMarker( ReactMarkerConstants.FABRIC_LAYOUT_END, null, commitNumber, layoutEndTime); ReactMarker.logFabricMarker(ReactMarkerConstants.FABRIC_COMMIT_END, null, commitNumber); + + if (ENABLE_FABRIC_LOGS) { + FLog.e( + TAG, + "Statistic of Fabric commit #: " + + commitNumber + + "\n - Total commit time: " + + (finishTransactionEndTime - commitStartTime) + + " ms.\n - Layout: " + + mLayoutTime + + " ms.\n - Diffing: " + + (diffEndTime - diffStartTime) + + " ms.\n" + + " - FinishTransaction (Diffing + Processing + Serialization of MountingInstructions): " + + mFinishTransactionCPPTime + + " ms."); + } } }