分析HarmonyOS应用/服务的CPU活动性能

CPU Profiler 性能分析是用来分析CPU性能瓶颈的工具,可以实时查看应用/服务的CPU使用率和线程活动,也可以查看记录的方法跟踪数据、方法采样数据和系统跟踪数据的详情。基于CPU性能分析,您可以了解在一段时间内执行了哪些方法,以及每个方法在其执行期间消耗的CPU资源,可以有针对性的优化应用/服务的CPU使用率,提供更快、更顺畅的用户体验,以及延长设备电池续航时间。

录制CPU活动数据

录制HarmonyOS应用或服务的CPU活动数据,需要将待分析的应用或服务运行起来,当前仅支持本地真机。

NOTE
录制JS的CPU活动数据,应用/服务只能以Debug模式运行。

1.在DevEco Studio菜单栏上单击View > Tool Windows > Profiler,或者在DevEco Studio底部工具栏单击Profiler按钮,打开Profiler分析器。在Profiler分析器的SESSIONS窗口,单击+按钮,在弹出下拉列表中先选择设备,然后选择待分析的进程。在这里插入图片描述
2.在实时变化视图,单击CPU区域,进入CPU详情页面。在这里插入图片描述
3.在CPU详情页面选择CPU数据的录制模式,然后单击Record,开始录制CPU活动数据。

开始录制后,会在SESSIONS窗口的当前会话下生成应用/服务的数据记录。CPU数据的录制模式分为以下几种:

  • 对Java 方法采样(Sample Java Methods):在应用/服务的Java代码执行期间,定期捕获应用/服务的调用堆栈。分析器会比较捕获的数据集,以推导与应用/服务的 Java 代码执行有关的时间和资源使用信息。
  • 跟踪Java 方法(Trace JavaMethods):在运行时检测应用/服务,在每个方法调用开始和结束时记录一个时间戳。系统会收集并比较这些时间戳,以生成方法跟踪数据,包括时间信息和CPU使用率。
  • 跟踪JS 方法(Trace JSMethods):在运行时检测应用/服务,在每个方法调用开始和结束时记录一个时间戳。系统会收集并比较这些时间戳,以生成方法跟踪数据,包括时间信息和CPU使用率。
  • 跟踪系统调用(Trace SystemCalls):捕获应用/服务运行的细节,以便您检查应用/服务与系统资源的交互情况。您可以检查线程状态的确切时间和持续时间、直观地查看所有内核的CPU瓶颈在何处,并添加需分析的自定义跟踪事件。

除了使用以上几种数据录制模式外,还可以单击模式选择下拉列表中的Edit Configurations自定义数据录制模式。在这里插入图片描述
4.单击CPU详情页面的上部或下部的Stop结束当前录制。CPU录制完成后,可以在SESSIONS窗口选中该数据记录,单击右键或导出按钮将数据记录导出,方便分享和以后的查看在这里插入图片描述

查看CPU跟踪数据

CPU活动数据录制后,可以在SESSIONS窗口单击要查看的数据记录,或单击+按钮,在下拉列表中选择Load from file,导入数据记录文件。在这里插入图片描述
1:单击数据记录,可查看数据详情。

2:CPU在录制时间内的使用情况。

3:IO资源占用情况。

4:Interaction:在应用/服务的生命周期内,用户与应用/服务互动的事件。

5:Threads:线程活动状态,可以查看线程是处于运行状态还是休眠状态,选择具体的线程,可以在右侧的Analysis窗口查看线程的详细信息。

6:Analysis窗口,选择All threads可以看到全部线程的信息。选择具体的某个线程,可以查看该线程或方法调用的详细数据。

7:Time reference菜单,选择以下选项之一,以确定如何测量每次调用的时间信息(仅跟踪 Java 方法中支持):

  • Wall clock time:该时间信息表示进程从开始运行到结束,时钟实际走过的时间。
  • Thread time:该时间信息表示实际经过的时间减去线程没有占用CPU资源的那部分时间。对于任何给定的调用,其线程时间始终小于或等于其Wall clocktime。使用线程时间可以让您更好地了解线程的实际CPU 使用率中有多少是给定方法或函数占用的。

8:过滤器,按函数、方法、类或软件包名称过滤跟踪数据。在Flame chart 标签页中,会突出显示包含符合搜索查询条件的调用、软件包或类的调用堆栈。在Top down 和Bottom up标签页中,这些调用堆栈优先于其他跟踪结果。还可以通过勾选搜索字段旁边的相应方框来启用以下选项:

Regex:搜索中包含正则表达式。

Match case:搜索区分大小写。

对于方法跟踪数据,可以直接在Threads时间轴中查看Call Chart,也可以从Analysis窗口查看Flame Chart、Top Down 和 Bottom Up标签页。对于系统调用跟踪数据,可以在Threads时间轴查看Trace Events,也可以从Analysis窗口查看 Flame Chart、Top Down 和 Bottom Up 标签页。

使用 Call Chart 检查跟踪数据

Call Chart直接在Threads 时间轴中查看 ,将鼠标指针悬停在某个方法上,以图形方式来呈现方法跟踪数据或函数跟踪数据。对系统API 的调用显示为橙色,对应用/服务自有方法的调用显示为绿色,对第三方API(包括Java 语言API)的调用显示为蓝色。在这里插入图片描述

使用Flame Chart检查跟踪数据

Flame Chart标签页提供一个倒置的调用图表,用来汇总完全相同的调用堆栈。将鼠标指针悬停在某个方法上,可以查看哪些方法或函数消耗的时间最多。在这里插入图片描述
使用Top Down检查跟踪数据

Top Down标签显示一个调用列表,在该列表中展开方法或函数节点会显示它的被调用方。与Flame chart标签页类似,“Top Down”树也汇总了具有相同调用堆栈的完全相同的方法的跟踪信息。也就是说,Flame chart标签页提供了Top down标签页的图形表示方式。

Top Down 标签提供以下信息来帮助说明在每个调用上所花的CPU时间(时间也可表示为在选定范围内占线程总时间的百分比):

Self:方法或函数调用在执行自己的代码(而非被调用方的代码)上所花的时间。

Children:方法或函数调用在执行它的被调用方(而非自己的代码)上所花的时间。

Total:方法的Self 时间和Children 时间的总和。这表示应用/服务在执行调用时所用的总时间。在这里插入图片描述

使用Bottom Up检查跟踪数据

Bottom Up 标签页显示一个调用列表,在该列表中展开函数或方法的节点会显示它的调用方。Bottom Up 标签页用于按照占用的CPU时间由多到少(或由少到多)的顺序对方法或函数排序。您可以检查每个节点以确定哪些调用方在调用这些方法或函数上所花的CPU时间最多。与“Top Down”树相比,“Bottom Up”树中每个方法或函数的时间信息参照的是每个树顶部的方法(顶部节点)。CPU时间也可表示为在该记录期间占线程总时间的百分比。下表说明了如何解读顶部节点及其调用方(子节点)的时间信息。
在这里插入图片描述
在这里插入图片描述

使用Trace Events查看系统事件

检查系统跟踪数据时,您可以在Threads 时间轴中检查Trace Events,以查看每个线程上所发生事件的详细信息。将鼠标指针悬停在某个事件上,可查看该事件的名称以及在每种状态下所花费的时间。单击事件可在Analysis 窗格中查看详情。

CPU cores 窗格显示每个核心上安排的线程ability。将鼠标指针悬停在某个线程ability上,可查看该核心在该特定时间在哪个线程上运行。
在这里插入图片描述

要想成为一名合格的鸿蒙高级开发工程师,以上知识点是必须要掌握的,除此之外,还需要掌握一些鸿蒙应用开发相关的一些技术

为了节省大家一些查找的时间,这边联合几位行业大佬,为大家准备了一份《鸿蒙全栈技术 实战项目驱动式教学》的学习导图,从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:《一小时快速认识HarmonyOSicon-default.png?t=N7T8https://docs.qq.com/doc/DZVVZR2lzcnJZSFlO
在这里插入图片描述

除了上面整理的思维导图以外,这里还特别整理的一份《鸿蒙 (Harmony OS)开发学习手册》给大家进行参考学习:

一、入门必看

1.应用开发导读(ArkTS)

2.……在这里插入图片描述

二、HarmonyOS 概念

1.系统定义

2.技术架构

3.技术特性

4.系统安全

5…在这里插入图片描述

三、如何快速入门?《鸿蒙HarmonyOS分布式项目实战icon-default.png?t=N7T8https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.基本概念

2.构建第一个ArkTS应用

3.构建第一个JS应用

4.……在这里插入图片描述

四、开发基础知识

1.应用基础知识

2.配置文件

3.应用数据管理

4.应用安全管理

5.应用隐私保护

6.三方应用调用管控机制

7.资源分类与访问

8.学习ArkTS语言

9.……在这里插入图片描述

五、基于ArkTS 开发

1.Ability开发

2.UI开发

3.公共事件与通知

4.窗口管理

5.媒体

6.安全

7.网络与链接

8.电话服务

9.数据管理

10.后台任务(Background Task)管理

11.设备管理

12.设备使用信息统计

13.DFX

14.国际化开发

15.折叠屏系列

16.……在这里插入图片描述

更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙4.0源码开发架构分析pdficon-default.png?t=N7T8https://docs.qq.com/doc/DZXB5WmVIVHRwS0pY

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/658639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你有一份企业法务建设方案待查收

在当今这个信息化飞速发展的时代,企业法务工作的高效与精准已成为企业竞争力的重要组成部分。随着商业活动的日益复杂和法律法规的不断更新,传统的法务管理模式已难以满足现代企业的需求。因此,企业法务信息化建设不仅是时代发展的必然趋势&a…

NC248:左叶子之和(C++)

1.题目描述 2.题目分析 我们以一个二叉树为例 左叶子的特点是什么? 是左节点并且没有左右孩子节点 所以我们用leftnode保存root->lefe节点,判断条件为leftnode存在,并且不存在leftnode->left和leftnode->right,如果满…

实战项目(二)汽车保养管家系统

一、实现技术 前端技术:html、javascript(jquery、ajax、json)、css、layui 后端技术:java、mysql、servlet 开发工具:eclipse、vscode 二、项目描述 基于web的汽车保养管家系统的设计与实现 一、功能需求 1.用户功能 1.1…

UI动效如何通过ps放到贴图模板里导出gif效果图

经常看到设计网站上有将UI动效在好看的模板里进行展示的,效果非常棒!很多设计师应该都可以做出好看的UI动效动画效果,但不知道怎么把动效放到手机模板里进行更好的展示。 这篇教程就是帮你把制作好的动效动画通过ps放到好看的模板里&#xf…

责任链模式在java中的实现

1 总览 2 概念 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。 3 实现 公共部分,一个系…

【数据结构 03】循环队列

一、原理 循环队列从功能角度具有队列的性质,即遵从先进先出原则,但是其存储方式是顺序存储。 循环队列的存储空间大小通常都是固定的,通过前指针和尾指针的移动控制循环队列数据的增删。 特征:顺序存储、先进先出、容量有限&a…

超声波风速风向传感器的优势及应用

TH-WQX2随着科技的不断发展,传感器技术日益成为众多领域中不可或缺的一部分。其中,超声波风速风向传感器凭借其独特的优势,在气象、能源、环保等领域中发挥着越来越重要的作用。 首先,超声波风速风向传感器无需机械转动部件&#…

代码随想录算法刷题训练营day20

代码随想录算法刷题训练营day20:LeetCode(654)最大二叉树、LeetCode(617)合并二叉树、LeetCode(700)二叉搜索树中的搜索、LeetCode(700)二叉搜索树中的搜索、LeetCode(98)验证二叉搜索 LeetCode(654)最大二叉树 题目 代码 import java.util.Arrays;/*** Definit…

vue3.0 + 动态加载组件 + 全局注册组件

首先 vue 动态加载组件使用的是 component 标签&#xff0c;并通过设置组件的is 属性来指定要渲染的组件。例如&#xff1a; <component :is"currentComponent"></component>其中&#xff0c;currentComponent 是一个变量&#xff0c;它的值可以是以下几…

搭建幻兽帕鲁需要什么样的服务器

作为一个开放世界生存制造类游戏《幻兽帕鲁》收获了空前绝后的热度&#xff0c;玩家们在游戏中通过在地图上捕捉收集到的“帕鲁”进行训练&#xff0c;合理利用他们的能力进行战斗&#xff0c;建立自己的家园、开辟新的世界、解锁新的冒险情节&#xff0c;获取更多游戏信息增加…

【数据结构 01】栈

一、原理 栈通常从数据结构和内存空间两个角度解释&#xff0c;从数据结构的角度&#xff0c;栈是一种线性结构表&#xff0c;只允许在固定的一端进行插入和删除元素&#xff0c;从内存空间角度&#xff0c;操作系统为函数和变量分配的内存空间通常在栈区&#xff0c;但是无论…

怎么查询鸿蒙真机支持的API版本

1、打开设备的开发者模式与USB调试并通过USB连接上电脑。 2、管理员身份运行cmd。 3、进入hdc.exe所在目录。(鸿蒙OS IDE的SDK下载目录中) 4、输入hdc shell&#xff0c;进入特殊模式 5、输入 getprop hw_sc.build.os.apiversion 查看API版本 6、输入 getprop hw_sc.build…

第九节HarmonyOS 常用基础组件23-Menu、MenuItem、MenuItemGroup

1、描述 Menu&#xff1a;以垂直列表形式显示的菜单。 MenuItem&#xff1a;用来展示菜单Menu中具体的item菜单项。 MenuItemGroup&#xff1a;该组件用来展示菜单MenuItem的分组。 2、子组件 Menu&#xff1a;包含MenuItem、MenuItemGroup子组件。 MenuItem&#xff1a;…

安全测试-pikachu靶场搭建

pikachu靶场搭建 文章目录 pikachu安装步骤 pikachu pikachu是一个自带web漏洞的应用系统&#xff0c;在这里包含了常见的web安全漏洞&#xff0c;也就是练习的靶场。 练习内容包括&#xff1a; 1.暴力破解 2.XSS 3.CSRF 4.SQL注入 5.RCE 6.文件包含 7.不安全的文件下载 8.不安…

【C++】类和对象(二)——构造/析构/拷贝构造函数

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读1. 默认成员函数2. 构造函数2.1 引入2.2 特性2.3 默认构造函数 3. 析构函数3.1 概念3.2 特性3.3 默认析构函数 4. 拷贝构造函…

大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置

上一篇&#xff1a; 大数据 - Spark系列《一》- 从Hadoop到Spark&#xff1a;大数据计算引擎的演进-CSDN博客 目录 1. &#x1f959;Idea中配置Live Templates来快速生成代码片段 2. &#x1f959;Idea中配置文件模板自定义初始代码 3.&#x1f959;设置spark-submit提交程…

【排序算法】C语言实现随机快排,巨详细讲解

文章目录 &#x1f680;前言&#x1f680;快排的核心过程partition&#xff08;划分过程&#xff09;&#x1f680;快排1.0&#x1f680;随机快速排序&#x1f680;稳定性 &#x1f680;前言 铁子们好啊&#xff01;继续我们排序算法今天要讲的是快排&#xff0c;通常大家所说…

HBase表结构

HBase是非关系型数据库&#xff0c;是高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。 HBase使用场景 大规模数据存储&#xff1a;如日志记录、数据库备份等。实时数据访问&#xff1a;如实时搜索、实时分析等。高性能读写&#xff1a;如高并发、低延迟的读写操…

【SHUD】Windows下安装rSHUD

目录 说明一、安装R二、安装rSHUD自动安装依赖手动安装依赖安装rShud说明 rSHUD官网 rSHUD功能: 空间数据分析和操作。处理矢量和栅格数据,建立非结构三角网络。读/写SHUD模型的输入文件读取SHUD模型输出文件自动化模型调参水文数据时间序列分析二维三维数据可视化GIS空间数…

oj赛(双周赛第二十次)

目录 碰碰车 小码哥与机器人 小码哥的跳棋游戏 竖直打印机 排队 邮箱地址 碰碰车 难度:钻石 占用内存:128 M时间限制:1秒 游乐园玩碰碰车&#xff0c;其中有一种碰碰车是在一条直线上行驶。该碰碰车有一个初始朝向和初始位置&#xff0c;并且以每秒一个单位的速度向初始方…