OpenHarmony实战开发-如何使用HiTraceMeter跟踪性能(ArkTS/JS)

567 篇文章 2 订阅
555 篇文章 0 订阅

简介

HiTraceMeter提供系统性能打点接口。开发者通过在关键代码位置调用HiTraceMeter接口提供的API接口,能够有效跟踪进程轨迹、查看系统性能。

基本概念

HiTraceMeter Tag:跟踪数据使用类别分类,称作HiTraceMeter Tag或HiTraceMeter Category。一般每个软件子系统对应一个Tag,该Tag在打点API中以类别Tag参数传入。HiTraceMeter命令行工具采集跟踪数据时,只采集给定的Tag类别选项指定的跟踪数据。

实现原理

应用程序通过HiTraceMeter函数接口进行打点,HiTraceMeter函数将跟踪数据通过内核sysfs文件接口输出到内核的ftrace数据缓冲区。

HiTraceMeter命令行工具读取内核ftrace缓冲区中的跟踪数据,将文本格式的跟踪数据保存到设备侧的文件中。

约束与限制

由于JS程序的异步IO特性,目前HiTraceMeter只提供了异步接口。

接口说明

性能打点跟踪接口由HiTraceMeter模块提供

在这里插入图片描述

开发步骤

在应用启动执行页面加载后,开始分布式跟踪;完成业务之后,停止分布式跟踪。

1.新建一个ArkTS应用工程,在“Project”窗口点击“entry > src > main > ets > pages > index”,打开工程中的“index.ets”文件;在页面执行加载后,在自己的业务中调用hiTraceMeter的接口,进行性能打点跟踪,以任务名name为HITRACE_TAG_APP为例, 示例代码如下:

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';

            // 跟踪并行执行的同名任务
            hitrace.startTrace("HITRACE_TAG_APP", 1001);
            // 业务流程
            console.log(`HITRACE_TAG_APP running`);

            // 第二个跟踪任务开始,同时第一个跟踪的同名任务还没结束,出现了并行执行,对应接口的taskId需要不同。
            hitrace.startTrace("HITRACE_TAG_APP", 1002);
            // 业务流程
            console.log(`HITRACE_TAG_APP running`);

            hitrace.finishTrace("HITRACE_TAG_APP", 1001);
            hitrace.finishTrace("HITRACE_TAG_APP", 1002);

            // 跟踪串行执行的同名任务,taskId可以不同,也可以相同
            hitrace.startTrace("HITRACE_TAG_APP", 1003);
            // 业务流程
            console.log(`HITRACE_TAG_APP running`);
            //第一个跟踪的任务结束
            hitrace.finishTrace("HITRACE_TAG_APP", 1003);

            // 第二个跟踪任务开始,同名的待跟踪任务串行执行,且taskId不同
            hitrace.startTrace("HITRACE_TAG_APP", 1004);
            // 业务流程
            console.log(`HITRACE_TAG_APP running`);
            let traceCount = 3;
            hitrace.traceByValue("myTestCount", traceCount);
            hitrace.finishTrace("HITRACE_TAG_APP", 1004);

            // 第三个跟踪任务开始,同名的待跟踪任务串行执行,且taskId与上一个相同
            hitrace.startTrace("HITRACE_TAG_APP", 1004);
            // 业务流程
            console.log(`HITRACE_TAG_APP running`);
            //第三个跟踪的任务结束
            hitrace.finishTrace("HITRACE_TAG_APP", 1004);

          })
       }
       .width('100%')
     }
     .height('100%')
   }
}

2.运行项目,单击IDE界面上的运行按钮,在shell中依次执行如下命令:

hdc shell
hitrace --trace_begin app

执行抓取trace命令后,先在设备中自己的业务调用接口,继续依次执行如下命令:

hitrace --trace_dump | grep tracing_mark_write
hitrace --trace_finish

抓取trace成功的数据如下所示:

<...>-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

如果大家还没有掌握鸿蒙,现在想要在最短的时间里吃透它,我这边特意整理了《鸿蒙语法ArkTS、TypeScript、ArkUI、教学视频》以及《鸿蒙生态应用开发白皮书V2.0PDF》《鸿蒙开发学习手册》(共计890页)鸿蒙开发资料等…希望对大家有所帮助:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

鸿蒙语法ArkTS、TypeScript、ArkUI等…视频教程:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

OpenHarmony APP开发教程步骤:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

鸿蒙生态应用开发白皮书V2.0PDF:https://docs.qq.com/doc/DZVVkRGRUd3pHSnFG

在这里插入图片描述

南北双向高工技能基础:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

应用开发中高级就业技术:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

全网首发-工业级 南向设备开发就业技术:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

《鸿蒙开发学习手册》:

如何快速入门:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.基本概念
2.构建第一个ArkTS应用
3.……

在这里插入图片描述

开发基础知识:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……

在这里插入图片描述

基于ArkTS 开发:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值