From c1674601a0893ed986804bdb2744a1b4c4c348b9 Mon Sep 17 00:00:00 2001 From: shawn_he Date: Mon, 13 Feb 2023 11:45:57 +0800 Subject: [PATCH] update doc Signed-off-by: shawn_he --- .../dfx/hitracemeter-guidelines.md | 119 +++++++++++++++--- en/readme/globalization.md | 4 +- 2 files changed, 107 insertions(+), 16 deletions(-) diff --git a/en/application-dev/dfx/hitracemeter-guidelines.md b/en/application-dev/dfx/hitracemeter-guidelines.md index 2b8b7a562a..1547ba195a 100644 --- a/en/application-dev/dfx/hitracemeter-guidelines.md +++ b/en/application-dev/dfx/hitracemeter-guidelines.md @@ -17,19 +17,19 @@ hiTraceMeter provides APIs for system performance tracing. You can call the APIs ## Constraints -Due to the asynchronous I/O feature of JS, the hiTraceMeter module provides only asynchronous APIs. +- Due to the asynchronous I/O feature of JS, the hiTraceMeter module provides only asynchronous APIs. ## Available APIs - -The performance tracing APIs are provided by the **hiTraceMeter** module. For details, see [API Reference](../reference/apis/js-apis-hitracemeter.md). -**Table 1** APIs for performance tracing +The performance tracing APIs are provided by the **hiTraceMeter** module. For details, see [API Reference]( ../reference/apis/js-apis-hitracemeter.md). + +**APIs for performance tracing** -| API| Return Value| Description| +| API | Return Value | Description | | ---------------------------------------------------------------------------- | --------- | ------------ | -| hiTraceMeter.startTrace(name: string, taskId: number) | void | Starts a trace task. If multiple trace tasks with the same name need to be performed at the same time or a trace task needs to be performed multiple times concurrently, different task IDs must be specified in **startTrace**. If the trace tasks with the same name are not performed at the same time, the same task ID can be used.| -| hiTraceMeter.finishTrace(name: string, taskId: number) | void | Stops a trace task. The values of **name** and **taskId** must be the same as those of **hiTraceMeter.startTrace**.| -| hiTraceMeter.traceByValue(name: string, value: number) | void | Traces the value changes of a variable.| +| hiTraceMeter.startTrace(name: string, taskId: number) | void | Marks the start of a trace task. If multiple trace tasks with the same name need to be performed at the same time or a trace task needs to be performed multiple times concurrently, different task IDs must be specified in **startTrace**. If the trace tasks with the same name are not performed at the same time, the same task ID can be used.| +| hiTraceMeter.finishTrace(name: string, taskId: number) | void | Marks the end of a trace task. The values of **name** and **taskId** must be the same as those of **hiTraceMeter.startTrace**.| +| hiTraceMeter.traceByValue(name: string, value: number) | void | Marks the value changes of a numeric variable in a trace task.| ## How to Develop @@ -46,12 +46,12 @@ In this example, distributed call chain tracing begins when the application star }, onInit() { this.title = this.$t('strings.world'); - - // Start track tasks with the same name concurrently. + + // Start trace tasks with the same name concurrently. hiTraceMeter.startTrace("business", 1); // Keep the service process running. console.log(`business running`); - hiTraceMeter.startTrace("business", 2); // Start the second trace task while the first task is still running. The first and second tasks have the same name but different task IDs. + hiTraceMeter.startTrace("business", 2); // Start the second trace task with the same name while the first task is still running. The tasks are running concurrently and therefore their taskId must be different. // Keep the service process running. console.log(`business running`); hiTraceMeter.finishTrace("business", 1); @@ -59,14 +59,14 @@ In this example, distributed call chain tracing begins when the application star console.log(`business running`); hiTraceMeter.finishTrace("business", 2); - // Start track tasks with the same name at different times. + // Start trace tasks with the same name in serial mode. hiTraceMeter.startTrace("business", 1); // Keep the service process running. console.log(`business running`); hiTraceMeter.finishTrace("business", 1); // End the first trace task. // Keep the service process running. console.log(`business running`); - hiTraceMeter.startTrace("business", 1); // Start the second trace task after the first trace task ends. The two tasks have the same name and task ID. + hiTraceMeter.startTrace("business", 1); // Start the second trace task with the same name in serial mode. // Keep the service process running. console.log(`business running`); @@ -79,4 +79,95 @@ In this example, distributed call chain tracing begins when the application star } ``` -2. Click the run button on the application page. Then, you'll obtain the log information for service analysis. +2. Create an ArkTs application project. In the displayed **Project** window, choose **entry** > **src** > **main** > **ets** > **pages** > **index**, and double-click **index.js**. Add the code to implement performance tracing upon page loading. For example, if the name of the trace task is **HITRACE\_TAG\_APP**, the sample code is as follows: + + ```ts + import hitrace from '@ohos.hiTraceMeter'; + + @Entry + @Component + struct Index { + @State message: string = 'Hello World'; + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + .onClick(() => { + this.message = 'Hello ArkUI'; + + // Start trace tasks with the same name concurrently. + hitrace.startTrace("HITRACE_TAG_APP", 1001); + // Keep the service process running. + console.log(`HITRACE_TAG_APP running`); + + // Start the second trace task with the same name while the first task is still running. The tasks are running concurrently and therefore their taskId must be different. + hitrace.startTrace("HITRACE_TAG_APP", 1002); + // Keep the service process running. + console.log(`HITRACE_TAG_APP running`); + + hitrace.finishTrace("HITRACE_TAG_APP", 1001); + hitrace.finishTrace("HITRACE_TAG_APP", 1002); + + // If trace tasks with the same name are not run concurrently, the same taskId can be used. + hitrace.startTrace("HITRACE_TAG_APP", 1003); + // Keep the service process running. + console.log(`HITRACE_TAG_APP running`); + // End the first trace task. + hitrace.finishTrace("HITRACE_TAG_APP", 1003); + + // Start the second trace task with the same name in serial mode. It uses a taskId different from the first trace task. + hitrace.startTrace("HITRACE_TAG_APP", 1004); + // Keep the service process running. + console.log(`HITRACE_TAG_APP running`); + let traceCount = 3; + hitrace.traceByValue("myTestCount", traceCount); + hitrace.finishTrace("HITRACE_TAG_APP", 1004); + + // Start the third trace task with the same name in serial mode. It uses a taskId same as the second trace task. + hitrace.startTrace("HITRACE_TAG_APP", 1004); + // Keep the service process running. + console.log(`HITRACE_TAG_APP running`); + // End the third trace task. + hitrace.finishTrace("HITRACE_TAG_APP", 1004); + + }) + } + .width('100%') + } + .height('100%') + } + } + ``` + +3. Click the run button on the application page. Then, run the following commands in sequence in shell: + + ```shell + hdc shell + hitrace --trace_begin app + ``` + + After the trace command is executed, call the hiTraceMeter APIs in your own service logic on the device. Then, run the following commands in sequence: + + ```shell + hitrace --trace_dump | grep tracing_mark_write + hitrace --trace_finish + ``` + + The following is an example of the captured trace data: + + ``` + <...>-3310 (-------) [005] .... 351382.921936: tracing_mark_write: S|3310|H:HITRACE_TAG_APP 1001 + <...>-3310 (-------) [005] .... 351382.922138: tracing_mark_write: S|3310|H:HITRACE_TAG_APP 1002 + <...>-3310 (-------) [005] .... 351382.922165: tracing_mark_write: F|3310|H:HITRACE_TAG_APP 1001 + <...>-3310 (-------) [005] .... 351382.922175: tracing_mark_write: F|3310|H:HITRACE_TAG_APP 1002 + <...>-3310 (-------) [005] .... 351382.922182: tracing_mark_write: S|3310|H:HITRACE_TAG_APP 1003 + <...>-3310 (-------) [005] .... 351382.922203: tracing_mark_write: F|3310|H:HITRACE_TAG_APP 1003 + <...>-3310 (-------) [005] .... 351382.922210: tracing_mark_write: S|3310|H:HITRACE_TAG_APP 1004 + <...>-3310 (-------) [005] .... 351382.922233: tracing_mark_write: C|3310|H:myTestCount 3 + <...>-3310 (-------) [005] .... 351382.922240: tracing_mark_write: F|3310|H:HITRACE_TAG_APP 1004 + <...>-3310 (-------) [005] .... 351382.922247: tracing_mark_write: S|3310|H:HITRACE_TAG_APP 1004 + <...>-3310 (-------) [005] .... 351382.922266: tracing_mark_write: F|3310|H:HITRACE_TAG_APP 1004 + ``` diff --git a/en/readme/globalization.md b/en/readme/globalization.md index 8e1841cc3f..65c0d12515 100755 --- a/en/readme/globalization.md +++ b/en/readme/globalization.md @@ -51,7 +51,7 @@ The directory structure of the Globalization subsystem for the standard system i ``` /base/global -├── i18n_standard # Code repository for the i18n framework +├── i18n # Code repository for the i18n framework │ ├── frameworks # Core code of the i18n framework │ ├── interfaces # APIs │ │ ├── js # JavaScript APIs @@ -73,7 +73,7 @@ The directory structure of the Globalization subsystem for the standard system i [global\_i18n\_lite](https://gitee.com/openharmony/global_i18n_lite) -[global\_i18n\_standard](https://gitee.com/openharmony/global_i18n_standard) +[global\_i18n](https://gitee.com/openharmony/global_i18n) [global\_resmgr\_lite](https://gitee.com/openharmony/global_resmgr_lite) -- GitLab