1e41f4b71Sopenharmony_ci# @ohos.hiTraceMeter (性能打点)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci本模块提供了跟踪进程轨迹,度量程序执行性能的打点能力。本模块打点的数据供hiTraceMeter工具分析使用。
4e41f4b71Sopenharmony_ci详细开发流程请参考:[性能打点跟踪开发指导](../../dfx/hitracemeter-guidelines-arkts.md)。
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci> **说明:**
7e41f4b71Sopenharmony_ci>
8e41f4b71Sopenharmony_ci> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci## 导入模块
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci```js
14e41f4b71Sopenharmony_ciimport { hiTraceMeter } from '@kit.PerformanceAnalysisKit';
15e41f4b71Sopenharmony_ci```
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci## hiTraceMeter.startTrace
19e41f4b71Sopenharmony_ci
20e41f4b71Sopenharmony_cistartTrace(name: string, taskId: number): void
21e41f4b71Sopenharmony_ci
22e41f4b71Sopenharmony_ci标记一个预跟踪耗时任务的开始。
23e41f4b71Sopenharmony_ci
24e41f4b71Sopenharmony_ci如果有多个相同name的任务需要跟踪或者对同一个任务要跟踪多次,并且任务同时被执行,则每次调用startTrace的taskId不相同。
25e41f4b71Sopenharmony_ci
26e41f4b71Sopenharmony_ci如果具有相同name的任务是串行执行的,则taskId可以相同。具体示例可参考[hiTraceMeter.finishTrace](#hitracemeterfinishtrace)中的示例。
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci**参数:**
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
33e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
34e41f4b71Sopenharmony_ci| name | string | 是 | 要跟踪的任务名称 |
35e41f4b71Sopenharmony_ci| taskId | number | 是 | 任务id |
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci**示例:**
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci```js
40e41f4b71Sopenharmony_cihiTraceMeter.startTrace("myTestFunc", 1);
41e41f4b71Sopenharmony_ci```
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci
44e41f4b71Sopenharmony_ci## hiTraceMeter.finishTrace
45e41f4b71Sopenharmony_ci
46e41f4b71Sopenharmony_cifinishTrace(name: string, taskId: number): void
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ci标记一个预跟踪耗时任务的结束。
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_cifinishTrace的name和taskId必须与流程开始的[startTrace](#hitracemeterstarttrace)对应参数值一致。
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_ci**参数:**
55e41f4b71Sopenharmony_ci
56e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
57e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
58e41f4b71Sopenharmony_ci| name | string | 是 | 要跟踪的任务名称 |
59e41f4b71Sopenharmony_ci| taskId | number | 是 | 任务id。 |
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ci**示例:**
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci```js
64e41f4b71Sopenharmony_cihiTraceMeter.finishTrace("myTestFunc", 1);
65e41f4b71Sopenharmony_ci```
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_ci```js
68e41f4b71Sopenharmony_ci// 跟踪并行执行的同名任务
69e41f4b71Sopenharmony_cihiTraceMeter.startTrace("myTestFunc", 1);
70e41f4b71Sopenharmony_ci// 业务流程...... 
71e41f4b71Sopenharmony_cihiTraceMeter.startTrace("myTestFunc", 2);  // 第二个跟踪的任务开始,同时第一个跟踪的同名任务还没结束,出现了并行执行,对应接口的taskId需要不同。
72e41f4b71Sopenharmony_ci// 业务流程...... 
73e41f4b71Sopenharmony_cihiTraceMeter.finishTrace("myTestFunc", 1);
74e41f4b71Sopenharmony_ci// 业务流程...... 
75e41f4b71Sopenharmony_cihiTraceMeter.finishTrace("myTestFunc", 2);
76e41f4b71Sopenharmony_ci```
77e41f4b71Sopenharmony_ci
78e41f4b71Sopenharmony_ci```js
79e41f4b71Sopenharmony_ci// 跟踪串行执行的同名任务
80e41f4b71Sopenharmony_cihiTraceMeter.startTrace("myTestFunc", 1);
81e41f4b71Sopenharmony_ci// 业务流程...... 
82e41f4b71Sopenharmony_cihiTraceMeter.finishTrace("myTestFunc", 1);  // 第一个跟踪的任务结束
83e41f4b71Sopenharmony_ci// 业务流程...... 
84e41f4b71Sopenharmony_cihiTraceMeter.startTrace("myTestFunc", 1);   // 第二个跟踪的同名任务开始,同名的待跟踪任务串行执行。
85e41f4b71Sopenharmony_ci// 业务流程...... 
86e41f4b71Sopenharmony_cihiTraceMeter.finishTrace("myTestFunc", 1);
87e41f4b71Sopenharmony_ci```
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci
90e41f4b71Sopenharmony_ci## hiTraceMeter.traceByValue
91e41f4b71Sopenharmony_ci
92e41f4b71Sopenharmony_citraceByValue(name: string, count: number): void
93e41f4b71Sopenharmony_ci
94e41f4b71Sopenharmony_ci用来标记一个预跟踪的数值变量,该变量的数值会不断变化。
95e41f4b71Sopenharmony_ci
96e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
97e41f4b71Sopenharmony_ci
98e41f4b71Sopenharmony_ci**参数:**
99e41f4b71Sopenharmony_ci
100e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
101e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
102e41f4b71Sopenharmony_ci| name | string | 是 | 要跟踪的数值变量名称 |
103e41f4b71Sopenharmony_ci| count | number | 是 | 变量的值 |
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_ci**示例:**
106e41f4b71Sopenharmony_ci```js
107e41f4b71Sopenharmony_cilet traceCount = 3;
108e41f4b71Sopenharmony_cihiTraceMeter.traceByValue("myTestCount", traceCount);
109e41f4b71Sopenharmony_citraceCount = 4;
110e41f4b71Sopenharmony_cihiTraceMeter.traceByValue("myTestCount", traceCount);
111e41f4b71Sopenharmony_ci//业务流程......
112e41f4b71Sopenharmony_ci```
113