diff --git a/React/Base/RCTBatchedBridge.m b/React/Base/RCTBatchedBridge.m index 212b051b0..c2e02f0d2 100644 --- a/React/Base/RCTBatchedBridge.m +++ b/React/Base/RCTBatchedBridge.m @@ -433,7 +433,6 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithDelegate:(id)dele } // Set up modules that require main thread init or constants export - [_performanceLogger setValue:0 forTag:RCTPLNativeModuleMainThread]; for (RCTModuleData *moduleData in _moduleDataByID) { if (whitelistedModules && ![whitelistedModules containsObject:[moduleData moduleClass]]) { continue; @@ -541,6 +540,12 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithDelegate:(id)dele NSRunLoop *targetRunLoop = [self->_javaScriptExecutor isKindOfClass:[RCTJSCExecutor class]] ? [NSRunLoop currentRunLoop] : [NSRunLoop mainRunLoop]; [self->_displayLink addToRunLoop:targetRunLoop]; + // Log metrics about native requires during the bridge startup. + uint64_t nativeRequiresCount = [self->_performanceLogger valueForTag:RCTPLRAMNativeRequiresCount]; + [self->_performanceLogger setValue:nativeRequiresCount forTag:RCTPLRAMStartupNativeRequiresCount]; + uint64_t nativeRequires = [self->_performanceLogger valueForTag:RCTPLRAMNativeRequires]; + [self->_performanceLogger setValue:nativeRequires forTag:RCTPLRAMStartupNativeRequires]; + [self->_performanceLogger markStopForTag:RCTPLBridgeStartup]; // Perform the notification on the main thread, so we can't run into diff --git a/React/Base/RCTPerformanceLogger.h b/React/Base/RCTPerformanceLogger.h index ab37e1d54..7f82fc695 100644 --- a/React/Base/RCTPerformanceLogger.h +++ b/React/Base/RCTPerformanceLogger.h @@ -14,9 +14,10 @@ typedef NS_ENUM(NSUInteger, RCTPLTag) { RCTPLScriptExecution, RCTPLRAMBundleLoad, RCTPLRAMStartupCodeSize, + RCTPLRAMStartupNativeRequires, + RCTPLRAMStartupNativeRequiresCount, RCTPLRAMNativeRequires, RCTPLRAMNativeRequiresCount, - RCTPLRAMNativeRequiresSize, RCTPLNativeModuleInit, RCTPLNativeModuleMainThread, RCTPLNativeModulePrepareConfig, diff --git a/React/Base/RCTPerformanceLogger.m b/React/Base/RCTPerformanceLogger.m index f1902575c..da1a2537d 100644 --- a/React/Base/RCTPerformanceLogger.m +++ b/React/Base/RCTPerformanceLogger.m @@ -34,9 +34,10 @@ @"ScriptExecution", @"RAMBundleLoad", @"RAMStartupCodeSize", + @"RAMStartupNativeRequires", + @"RAMStartupNativeRequiresCount", @"RAMNativeRequires", @"RAMNativeRequiresCount", - @"RAMNativeRequiresSize", @"NativeModuleInit", @"NativeModuleMainThread", @"NativeModulePrepareConfig", diff --git a/React/Executors/RCTJSCExecutor.mm b/React/Executors/RCTJSCExecutor.mm index 7d66dcdbf..7271931f3 100644 --- a/React/Executors/RCTJSCExecutor.mm +++ b/React/Executors/RCTJSCExecutor.mm @@ -770,11 +770,6 @@ static NSData *loadPossiblyBundledApplicationScript(NSData *script, NSURL *sourc script = loadRAMBundle(sourceURL, error, randomAccessBundle); [performanceLogger markStopForTag:RCTPLRAMBundleLoad]; [performanceLogger setValue:script.length forTag:RCTPLRAMStartupCodeSize]; - - // Reset the counters that the native require implementation uses - [performanceLogger setValue:0 forTag:RCTPLRAMNativeRequires]; - [performanceLogger setValue:0 forTag:RCTPLRAMNativeRequiresCount]; - [performanceLogger setValue:0 forTag:RCTPLRAMNativeRequiresSize]; } else { // JSStringCreateWithUTF8CString expects a null terminated C string. // RAM Bundling already provides a null terminated one. @@ -936,7 +931,6 @@ static void executeRandomAccessModule(RCTJSCExecutor *executor, uint32_t moduleI return; } - [_performanceLogger addValue:size forTag:RCTPLRAMNativeRequiresSize]; executeRandomAccessModule(self, ID, NSSwapLittleIntToHost(moduleData->offset), size); }