From 857be044ccf3085eb9c9e1561f51132882dbfd9c Mon Sep 17 00:00:00 2001 From: Aaron Chiu Date: Thu, 4 May 2017 13:34:51 -0700 Subject: [PATCH] add more systraces Reviewed By: alexeylang Differential Revision: D4998351 fbshipit-source-id: a5c3ad829400b23aec49a2b919ab3fc7fc20c07b --- .../facebook/react/ReactInstanceManager.java | 15 ++++--- .../com/facebook/react/ReactRootView.java | 40 +++++++++++-------- .../react/uimanager/UIManagerModule.java | 4 ++ 3 files changed, 37 insertions(+), 22 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java index eebe4437b3a5ff..43eeed955880bf 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java @@ -18,11 +18,9 @@ import java.util.List; import android.app.Activity; -import android.app.Application; import android.content.Context; import android.content.Intent; import android.net.Uri; -import android.os.Bundle; import android.os.Process; import android.view.View; @@ -40,13 +38,10 @@ import com.facebook.react.bridge.ReactContext; import com.facebook.react.bridge.ReactMarker; import com.facebook.react.bridge.ReactMarkerConstants; -import com.facebook.react.bridge.WritableMap; -import com.facebook.react.bridge.WritableNativeMap; import com.facebook.react.bridge.queue.ReactQueueConfigurationSpec; import com.facebook.react.common.LifecycleState; import com.facebook.react.common.ReactConstants; import com.facebook.react.common.annotations.VisibleForTesting; -import com.facebook.react.cxxbridge.Arguments; import com.facebook.react.cxxbridge.CatalystInstanceImpl; import com.facebook.react.cxxbridge.JSBundleLoader; import com.facebook.react.cxxbridge.JSCJavaScriptExecutor; @@ -839,12 +834,20 @@ private void attachMeasuredRootViewToInstance( } UIManagerModule uiManagerModule = catalystInstance.getNativeModule(UIManagerModule.class); - int rootTag = uiManagerModule.addMeasuredRootView(rootView); + final int rootTag = uiManagerModule.addMeasuredRootView(rootView); rootView.setRootViewTag(rootTag); rootView.runApplication(); + Systrace.beginAsyncSection( + TRACE_TAG_REACT_JAVA_BRIDGE, + "pre_rootView.onAttachedToReactInstance", + rootTag); UiThreadUtil.runOnUiThread(new Runnable() { @Override public void run() { + Systrace.endAsyncSection( + TRACE_TAG_REACT_JAVA_BRIDGE, + "pre_rootView.onAttachedToReactInstance", + rootTag); rootView.onAttachedToReactInstance(); } }); diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java b/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java index ba3f752e5b8d4a..82fa4986a692a8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java @@ -42,6 +42,9 @@ import com.facebook.react.uimanager.SizeMonitoringFrameLayout; import com.facebook.react.uimanager.UIManagerModule; import com.facebook.react.uimanager.events.EventDispatcher; +import com.facebook.systrace.Systrace; + +import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE; /** * Default root view for catalyst apps. Provides the ability to listen for size changes so that a UI @@ -267,26 +270,31 @@ public void setAppProperties(@Nullable Bundle appProperties) { * same rootTag, which will re-render the application from the root. */ /* package */ void runApplication() { - if (mReactInstanceManager == null || !mIsAttachedToInstance) { - return; - } + Systrace.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "ReactRootView.runApplication"); + try { + if (mReactInstanceManager == null || !mIsAttachedToInstance) { + return; + } - ReactContext reactContext = mReactInstanceManager.getCurrentReactContext(); - if (reactContext == null) { - return; - } + ReactContext reactContext = mReactInstanceManager.getCurrentReactContext(); + if (reactContext == null) { + return; + } - CatalystInstance catalystInstance = reactContext.getCatalystInstance(); + CatalystInstance catalystInstance = reactContext.getCatalystInstance(); - WritableNativeMap appParams = new WritableNativeMap(); - appParams.putDouble("rootTag", getRootViewTag()); - @Nullable Bundle appProperties = getAppProperties(); - if (appProperties != null) { - appParams.putMap("initialProps", Arguments.fromBundle(appProperties)); - } + WritableNativeMap appParams = new WritableNativeMap(); + appParams.putDouble("rootTag", getRootViewTag()); + @Nullable Bundle appProperties = getAppProperties(); + if (appProperties != null) { + appParams.putMap("initialProps", Arguments.fromBundle(appProperties)); + } - String jsAppModuleName = getJSModuleName(); - catalystInstance.getJSModule(AppRegistry.class).runApplication(jsAppModuleName, appParams); + String jsAppModuleName = getJSModuleName(); + catalystInstance.getJSModule(AppRegistry.class).runApplication(jsAppModuleName, appParams); + } finally { + Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); + } } /** 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 702a6b539b8581..049d82091e34ce 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java @@ -184,6 +184,9 @@ public Map getPerformanceCounters() { * NB: this method is horribly not-thread-safe. */ public int addMeasuredRootView(final SizeMonitoringFrameLayout rootView) { + Systrace.beginSection( + Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, + "UIManagerModule.addMeasuredRootView"); final int tag = mNextRootViewTag; mNextRootViewTag += ROOT_VIEW_TAG_INCREMENT; @@ -220,6 +223,7 @@ public void runGuarded() { } }); + Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE); return tag; }