From 19602910a3be9db821ebf15356703972846ae07c Mon Sep 17 00:00:00 2001 From: jianhan-he <41508406+jianhan-he@users.noreply.github.com> Date: Fri, 28 Jun 2019 16:31:09 +0800 Subject: [PATCH] [iOS] add execute jsbundle time point (#2628) --- ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m | 14 ++++---------- ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m | 1 + .../WeexSDK/Sources/Performance/WXApmForInstance.h | 3 +++ .../WeexSDK/Sources/Performance/WXApmForInstance.m | 3 +++ 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m b/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m index 240eaccdaa..f74b03c35e 100644 --- a/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m +++ b/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m @@ -427,8 +427,6 @@ - (void)createInstance:(NSString *)instanceIdString [self.sendQueue setValue:sendQueue forKey:instanceIdString]; if (sdkInstance.dataRender && ![options[@"EXEC_JS"] boolValue]) { - WX_MONITOR_INSTANCE_PERF_START(WXFirstScreenJSFExecuteTime, [WXSDKManager instanceForID:instanceIdString]); - WX_MONITOR_INSTANCE_PERF_START(WXPTJSCreateInstance, [WXSDKManager instanceForID:instanceIdString]); if (_dataRenderHandler) { WXPerformBlockOnComponentThread(^{ [_dataRenderHandler createPage:instanceIdString template:jsBundleString options:options data:data]; @@ -444,8 +442,6 @@ - (void)createInstance:(NSString *)instanceIdString }); } } - WX_MONITOR_INSTANCE_PERF_END(WXPTJSCreateInstance, [WXSDKManager instanceForID:instanceIdString]); - [sdkInstance.apmInstance onStage:KEY_PAGE_STAGES_LOAD_BUNDLE_END]; return; } @@ -476,6 +472,7 @@ - (void)createInstance:(NSString *)instanceIdString } if ([WXDebugTool isDevToolDebug]) { [self callJSMethod:@"createInstanceContext" args:@[instanceIdString, newOptions, data?:@[],raxAPIScript?:@""]]; + [sdkInstance.apmInstance onStage:KEY_PAGE_STAGES_LOAD_BUNDLE_END]; if ([NSURL URLWithString:sdkInstance.pageName]) { [sdkInstance.instanceJavaScriptContext executeJavascript:jsBundleString withSourceURL:[NSURL URLWithString:sdkInstance.pageName]]; @@ -483,7 +480,7 @@ - (void)createInstance:(NSString *)instanceIdString [sdkInstance.instanceJavaScriptContext executeJavascript:jsBundleString]; } WX_MONITOR_INSTANCE_PERF_END(WXPTJSCreateInstance, [WXSDKManager instanceForID:instanceIdString]); - [sdkInstance.apmInstance onStage:KEY_PAGE_STAGES_LOAD_BUNDLE_END]; + [sdkInstance.apmInstance onStage:KEY_PAGE_STAGES_EXECUTE_BUNDLE_END]; } else { sdkInstance.callCreateInstanceContext = [NSString stringWithFormat:@"instanceId:%@\noptions:%@\ndata:%@", instanceIdString, newOptions, data]; //add instanceId to weexContext ,if fucn createInstanceContext failure ,then we will know which instance has problem (exceptionhandler) @@ -547,6 +544,7 @@ - (void)createInstance:(NSString *)instanceIdString [sdkInstance.instanceJavaScriptContext executeJavascript:jsBundleString]; } sdkInstance.instanceJavaScriptContext.javaScriptContext[@"wxExtFuncInfo"] = nil; + [sdkInstance.apmInstance onStage:KEY_PAGE_STAGES_EXECUTE_BUNDLE_END]; WX_MONITOR_INSTANCE_PERF_END(WXPTJSCreateInstance, [WXSDKManager instanceForID:instanceIdString]); }]; } @@ -567,7 +565,7 @@ - (void)createInstance:(NSString *)instanceIdString sdkInstance.instanceJavaScriptContext.javaScriptContext[@"wxExtFuncInfo"] = funcInfo; [self callJSMethod:@"createInstance" args:args]; sdkInstance.instanceJavaScriptContext.javaScriptContext[@"wxExtFuncInfo"] = nil; - + [sdkInstance.apmInstance onStage:KEY_PAGE_STAGES_EXECUTE_BUNDLE_END]; WX_MONITOR_INSTANCE_PERF_END(WXPTJSCreateInstance, [WXSDKManager instanceForID:instanceIdString]); } } @@ -607,8 +605,6 @@ - (void)createInstance:(NSString *)instanceIdString [self.sendQueue setValue:sendQueue forKey:instanceIdString]; if (sdkInstance.dataRender) { - WX_MONITOR_INSTANCE_PERF_START(WXFirstScreenJSFExecuteTime, [WXSDKManager instanceForID:instanceIdString]); - WX_MONITOR_INSTANCE_PERF_START(WXPTJSCreateInstance, [WXSDKManager instanceForID:instanceIdString]); if (_dataRenderHandler) { WXPerformBlockOnComponentThread(^{ [_dataRenderHandler createPage:instanceIdString contents:contents options:options data:data]; @@ -624,8 +620,6 @@ - (void)createInstance:(NSString *)instanceIdString }); } } - WX_MONITOR_INSTANCE_PERF_END(WXPTJSCreateInstance, [WXSDKManager instanceForID:instanceIdString]); - [sdkInstance.apmInstance onStage:KEY_PAGE_STAGES_LOAD_BUNDLE_END]; return; } } diff --git a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m index 46f451a339..a72fde66e9 100644 --- a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m +++ b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m @@ -610,6 +610,7 @@ - (void)_renderWithRequest:(WXResourceRequest *)request options:(NSDictionary *) } if (([newOptions[@"DATA_RENDER"] boolValue] && [newOptions[@"RENDER_WITH_BINARY"] boolValue]) || [newOptions[@"WLASM_RENDER"] boolValue]) { + [strongSelf.apmInstance onStage:KEY_PAGE_STAGES_DOWN_BUNDLE_END]; [strongSelf _renderWithData:data]; return; } diff --git a/ios/sdk/WeexSDK/Sources/Performance/WXApmForInstance.h b/ios/sdk/WeexSDK/Sources/Performance/WXApmForInstance.h index da559bcd17..55267c0a5a 100644 --- a/ios/sdk/WeexSDK/Sources/Performance/WXApmForInstance.h +++ b/ios/sdk/WeexSDK/Sources/Performance/WXApmForInstance.h @@ -49,6 +49,9 @@ extern NSString* const KEY_PAGE_STAGES_CUSTOM_PREPROCESS_END; extern NSString* const KEY_PAGE_STAGES_RENDER_ORGIGIN; extern NSString* const KEY_PAGE_STAGES_LOAD_BUNDLE_START; extern NSString* const KEY_PAGE_STAGES_LOAD_BUNDLE_END; +extern NSString* const KEY_PAGE_STAGES_EXECUTE_BUNDLE_END; +extern NSString* const KEY_PAGE_STAGES_EXECUTE_JSON_START; +extern NSString* const KEY_PAGE_STAGES_EXECUTE_JSON_END; extern NSString* const KEY_PAGE_STAGES_CREATE_FINISH; extern NSString* const KEY_PAGE_STAGES_FSRENDER; extern NSString* const KEY_PAGE_STAGES_NEW_FSRENDER; diff --git a/ios/sdk/WeexSDK/Sources/Performance/WXApmForInstance.m b/ios/sdk/WeexSDK/Sources/Performance/WXApmForInstance.m index 8da5386c78..2f74c8e358 100644 --- a/ios/sdk/WeexSDK/Sources/Performance/WXApmForInstance.m +++ b/ios/sdk/WeexSDK/Sources/Performance/WXApmForInstance.m @@ -62,6 +62,9 @@ NSString* const KEY_PAGE_STAGES_RENDER_ORGIGIN = @"wxRenderTimeOrigin"; NSString* const KEY_PAGE_STAGES_LOAD_BUNDLE_START = @"wxStartLoadBundle"; NSString* const KEY_PAGE_STAGES_LOAD_BUNDLE_END = @"wxEndLoadBundle"; +NSString* const KEY_PAGE_STAGES_EXECUTE_BUNDLE_END = @"wxEndExecuteBundle"; +NSString* const KEY_PAGE_STAGES_EXECUTE_JSON_START = @"wxStartExecuteJson"; +NSString* const KEY_PAGE_STAGES_EXECUTE_JSON_END = @"wxEndExecuteJson"; NSString* const KEY_PAGE_STAGES_CREATE_FINISH = @"wxJSBundleCreateFinish"; NSString* const KEY_PAGE_STAGES_FSRENDER = @"wxFsRender"; NSString* const KEY_PAGE_STAGES_NEW_FSRENDER = @"wxNewFsRender";