From b141363943e84904232b6e491abd1c7b3594fd17 Mon Sep 17 00:00:00 2001 From: Max Sherman Date: Wed, 24 Oct 2018 08:58:07 -0700 Subject: [PATCH] Instrument native library load time Summary: I'm interested in measuring this. Reviewed By: alexeylang Differential Revision: D10510275 fbshipit-source-id: e833153524413bc5ec6159ff100ade92b29e6d0c --- .../facebook/react/bridge/ReactBridge.java | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactBridge.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactBridge.java index a116d87818c710..c019830eb69a90 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactBridge.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactBridge.java @@ -9,19 +9,34 @@ import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE; +import android.os.SystemClock; import com.facebook.soloader.SoLoader; import com.facebook.systrace.Systrace; public class ReactBridge { + private static volatile long sLoadStartTime = 0; + private static volatile long sLoadEndTime = 0; + private static boolean sDidInit = false; - public static void staticInit() { - // No locking required here, worst case we'll call into SoLoader twice - // which will do its own locking internally - if (!sDidInit) { - Systrace.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "ReactBridge.staticInit::load:reactnativejni"); - SoLoader.loadLibrary("reactnativejni"); - sDidInit = true; - Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); + + public synchronized static void staticInit() { + if (sDidInit) { + return; } + sDidInit = true; + + sLoadStartTime = SystemClock.uptimeMillis(); + Systrace.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "ReactBridge.staticInit::load:reactnativejni"); + SoLoader.loadLibrary("reactnativejni"); + Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); + sLoadEndTime = SystemClock.uptimeMillis(); + } + + public static long getLoadStartTime() { + return sLoadStartTime; + } + + public static long getLoadEndTime() { + return sLoadEndTime; } }