From cc30d2f46d2bada24f6e60ae8143774087df6dcc Mon Sep 17 00:00:00 2001 From: Aaron Chiu Date: Fri, 9 Sep 2016 03:18:27 -0700 Subject: [PATCH] break down production startup with more markers Reviewed By: lexs Differential Revision: D3835031 fbshipit-source-id: e85c6322d11c6c7cd38b2432e7ab623ecc5908ed --- .../java/com/facebook/react/CoreModulesPackage.java | 6 ++++++ .../com/facebook/react/XReactInstanceManagerImpl.java | 10 +++++++++- .../facebook/react/bridge/ReactMarkerConstants.java | 10 ++++++++++ .../com/facebook/react/uimanager/UIManagerModule.java | 8 +++++++- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java b/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java index f490595cd..acd0e1a52 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java +++ b/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java @@ -20,6 +20,7 @@ import com.facebook.react.bridge.JavaScriptModule; import com.facebook.react.bridge.ModuleSpec; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactMarker; import com.facebook.react.common.build.ReactBuildConfig; import com.facebook.react.devsupport.HMRClient; import com.facebook.react.devsupport.JSCHeapCapture; @@ -42,6 +43,9 @@ import com.facebook.react.uimanager.debug.DebugComponentOwnershipModule; import com.facebook.react.uimanager.events.RCTEventEmitter; import com.facebook.systrace.Systrace; +import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_UI_MANAGER_MODULE_END; +import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_UI_MANAGER_MODULE_START; + /** * Package defining core framework modules (e.g. UIManager). It should be used for modules that * require special integration with other framework parts (e.g. with the list of packages to load @@ -182,6 +186,7 @@ import com.facebook.systrace.Systrace; } private UIManagerModule createUIManager(ReactApplicationContext reactContext) { + ReactMarker.logMarker(CREATE_UI_MANAGER_MODULE_START); Systrace.beginSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "createUIManagerModule"); try { List viewManagersList = mReactInstanceManager.createAllViewManagers( @@ -194,6 +199,7 @@ import com.facebook.systrace.Systrace; viewManagersList)); } finally { Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE); + ReactMarker.logMarker(CREATE_UI_MANAGER_MODULE_END); } } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/XReactInstanceManagerImpl.java b/ReactAndroid/src/main/java/com/facebook/react/XReactInstanceManagerImpl.java index c8fff1df6..a464ecb2a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/XReactInstanceManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/XReactInstanceManagerImpl.java @@ -63,12 +63,12 @@ import com.facebook.react.devsupport.RedBoxHandler; import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; import com.facebook.react.modules.core.DeviceEventManagerModule; import com.facebook.react.modules.debug.DeveloperSettings; -import com.facebook.react.views.imagehelper.ResourceDrawableIdHelper; import com.facebook.react.uimanager.AppRegistry; import com.facebook.react.uimanager.DisplayMetricsHolder; import com.facebook.react.uimanager.UIImplementationProvider; import com.facebook.react.uimanager.UIManagerModule; import com.facebook.react.uimanager.ViewManager; +import com.facebook.react.views.imagehelper.ResourceDrawableIdHelper; import com.facebook.soloader.SoLoader; import com.facebook.systrace.Systrace; @@ -77,10 +77,14 @@ import static com.facebook.react.bridge.ReactMarkerConstants.BUILD_NATIVE_MODULE import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_CATALYST_INSTANCE_END; import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_CATALYST_INSTANCE_START; import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_REACT_CONTEXT_START; +import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_VIEW_MANAGERS_END; +import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_VIEW_MANAGERS_START; import static com.facebook.react.bridge.ReactMarkerConstants.PROCESS_PACKAGES_END; import static com.facebook.react.bridge.ReactMarkerConstants.PROCESS_PACKAGES_START; import static com.facebook.react.bridge.ReactMarkerConstants.RUN_JS_BUNDLE_END; import static com.facebook.react.bridge.ReactMarkerConstants.RUN_JS_BUNDLE_START; +import static com.facebook.react.bridge.ReactMarkerConstants.SETUP_REACT_CONTEXT_END; +import static com.facebook.react.bridge.ReactMarkerConstants.SETUP_REACT_CONTEXT_START; import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE; /** @@ -676,6 +680,7 @@ import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE; @Override public List createAllViewManagers( ReactApplicationContext catalystApplicationContext) { + ReactMarker.logMarker(CREATE_VIEW_MANAGERS_START); Systrace.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "createAllViewManagers"); try { List allViewManagers = new ArrayList<>(); @@ -685,6 +690,7 @@ import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE; return allViewManagers; } finally { Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); + ReactMarker.logMarker(CREATE_VIEW_MANAGERS_END); } } @@ -744,6 +750,7 @@ import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE; } private void setupReactContext(ReactApplicationContext reactContext) { + ReactMarker.logMarker(SETUP_REACT_CONTEXT_START); Systrace.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "setupReactContext"); UiThreadUtil.assertOnUiThread(); Assertions.assertCondition(mCurrentReactContext == null); @@ -768,6 +775,7 @@ import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE; listener.onReactContextInitialized(reactContext); } Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); + ReactMarker.logMarker(SETUP_REACT_CONTEXT_END); } private void attachMeasuredRootViewToInstance( diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarkerConstants.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarkerConstants.java index 14c535886..6f72bfc7f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarkerConstants.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarkerConstants.java @@ -23,4 +23,14 @@ public class ReactMarkerConstants { public static final String RUN_JS_BUNDLE_END = "RUN_JS_BUNDLE_END"; public static final String NATIVE_MODULE_INITIALIZE_START = "NativeModule_start"; public static final String NATIVE_MODULE_INITIALIZE_END = "NativeModule_end"; + public static final String SETUP_REACT_CONTEXT_START = "SETUP_REACT_CONTEXT_START"; + public static final String SETUP_REACT_CONTEXT_END = "SETUP_REACT_CONTEXT_END"; + public static final String CREATE_UI_MANAGER_MODULE_START = "CREATE_UI_MANAGER_MODULE_START"; + public static final String CREATE_UI_MANAGER_MODULE_END = "CREATE_UI_MANAGER_MODULE_START"; + public static final String CREATE_VIEW_MANAGERS_START = "CREATE_VIEW_MANAGERS_START"; + public static final String CREATE_VIEW_MANAGERS_END = "CREATE_VIEW_MANAGERS_END"; + public static final String CREATE_UI_MANAGER_MODULE_CONSTANTS_START = + "CREATE_UI_MANAGER_MODULE_CONSTANTS_START"; + public static final String CREATE_UI_MANAGER_MODULE_CONSTANTS_END = + "CREATE_UI_MANAGER_MODULE_CONSTANTS_END"; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java index f0d9938ea..5ec09e13c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java @@ -23,6 +23,7 @@ import com.facebook.react.bridge.OnBatchCompleteListener; import com.facebook.react.bridge.PerformanceCounter; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReactMarker; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; @@ -33,7 +34,10 @@ import com.facebook.react.uimanager.events.EventDispatcher; import com.facebook.systrace.Systrace; import com.facebook.systrace.SystraceMessage; -/** +import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_UI_MANAGER_MODULE_CONSTANTS_END; +import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_UI_MANAGER_MODULE_CONSTANTS_START; + + /** *

Native module to allow JS to create and update native Views.

* *

@@ -131,11 +135,13 @@ public class UIManagerModule extends ReactContextBaseJavaModule implements } private static Map createConstants(List viewManagerList) { + ReactMarker.logMarker(CREATE_UI_MANAGER_MODULE_CONSTANTS_START); Systrace.beginSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "CreateUIManagerConstants"); try { return UIManagerModuleConstantsHelper.createConstants(viewManagerList); } finally { Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE); + ReactMarker.logMarker(CREATE_UI_MANAGER_MODULE_CONSTANTS_END); } }