js-apis-bytrace.md 3.4 KB
Newer Older
Z
zengyawen 已提交
1
# 性能打点
Z
zengyawen 已提交
2

Z
zengyawen 已提交
3
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
4
> - 从API Version 8开始,该接口不再维护,推荐使用新接口[`@ohos.hiTraceMeter`](js-apis-hitracemeter.md)。
X
xuyong 已提交
5
> - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
Z
zengyawen 已提交
6

Z
zengyawen 已提交
7 8

## 导入模块
Z
zengyawen 已提交
9 10 11 12 13

```
import bytrace from '@ohos.bytrace';
```

Z
zengyawen 已提交
14

Z
zengyawen 已提交
15

Z
zengyawen 已提交
16 17 18
## bytrace.startTrace

startTrace(name: string, taskId: number, expectedTime?: number): void
Z
zengyawen 已提交
19 20 21

标记一个预追踪耗时任务的开始,expectedTime是可选参数,标识该任务的期望耗时。

Z
zengyawen 已提交
22 23
**系统能力:** SystemCapability.Developtools.Bytrace

Z
zengyawen 已提交
24
**参数:**
Z
zengyawen 已提交
25

Z
zengyawen 已提交
26 27 28 29 30
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | string | 是 | 要追踪的任务名称 |
| taskId | number | 是 | 任务id |
| expectedTime | number | 否 | 期望的耗时时间,单位:ms |
Z
zengyawen 已提交
31

Z
zengyawen 已提交
32 33
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果有多个相同name的任务需要追踪或者对同一个任务要追踪多次,并且这些会同时被执行,则每次调用startTrace的taskId必须不一致。如果具有相同name的任务是串行执行的,则taskId可以相同。在下面bytrace.finishTrace的示例中会举例说明。
Z
zengyawen 已提交
34

Z
zengyawen 已提交
35 36 37 38 39 40
**示例:**

```
bytrace.startTrace("myTestFunc", 1);
bytrace.startTrace("myTestFunc", 1, 5); //从startTrace到finishTrace流程的耗时期望为5ms
```
Z
zengyawen 已提交
41 42 43 44 45


## bytrace.finishTrace

finishTrace(name: string, taskId: number): void
Z
zengyawen 已提交
46 47 48

标记一个预追踪耗时任务的结束。

Z
zengyawen 已提交
49 50
**系统能力:** SystemCapability.Developtools.Bytrace

Z
zengyawen 已提交
51 52 53 54 55 56
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | string | 是 | 要追踪的任务名称 |
| taskId | number | 是 | 任务id |
Z
zengyawen 已提交
57

Z
zengyawen 已提交
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> finishTrace的name和taskId必须与流程开始的startTrace对应参数值一致。

**示例:**

```
bytrace.finishTrace("myTestFunc", 1);
```

```
//追踪并行执行的同名任务
bytrace.startTrace("myTestFunc", 1);
//业务流程...... 
bytrace.startTrace("myTestFunc", 2);  //第二个追踪的任务开始,同时第一个追踪的同名任务还没结束,出现了并行执行,对应接口的taskId需要不同。
//业务流程...... 
bytrace.finishTrace("myTestFunc", 1);
//业务流程...... 
bytrace.finishTrace("myTestFunc", 2);
```

```
//追踪串行执行的同名任务
bytrace.startTrace("myTestFunc", 1);
//业务流程...... 
bytrace.finishTrace("myTestFunc", 1);  //第一个追踪的任务结束
//业务流程...... 
bytrace.startTrace("myTestFunc", 1);   //第二个追踪的同名任务开始,同名的待追踪任务串行执行。
//业务流程...... 
bytrace.finishTrace("myTestFunc", 1);
```
Z
zengyawen 已提交
88

Z
zengyawen 已提交
89 90 91

## bytrace.traceByValue

Z
zengyawen 已提交
92
traceByValue(name: string, count: number): void
Z
zengyawen 已提交
93 94

用来标记一个预追踪的数值变量,该变量的数值会不断变化。
Z
zengyawen 已提交
95

Z
zengyawen 已提交
96 97
**系统能力:** SystemCapability.Developtools.Bytrace

Z
zengyawen 已提交
98 99 100 101
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | string | 是 | 要追踪的数值变量名称 |
Z
zengyawen 已提交
102
| count | number | 是 | 变量的值 |
Z
zengyawen 已提交
103 104

**示例:**
Z
zengyawen 已提交
105

Z
zengyawen 已提交
106 107 108 109 110 111 112
```
let traceCount = 3;
bytrace.traceByValue("myTestCount", traceCount);
traceCount = 4;
bytrace.traceByValue("myTestCount", traceCount);
//业务流程......
```