Android性能自测

目录

一、应用启动耗时自测

二、帧率查看

三、Top命令查看系统资源占用

3.1 第一行:任务(进程)

3.2 第二行:mem状态

3.3 第三行:swap交换分区

3.4 第四行:cpu状态

3.5 第五行:标题

四、抓取trace.html文件分析

4.1 使用Android Monitor工具

4.2 使用adb shell atrace命令

4.3 使用systrace.py命令

五、抓取log分析

5.1 设置日志缓冲大小

 5.2 打印crash日志

 5.3 打印常规日志

 5.4 打印内核日志

 5.5 打印非内核log

  5.6 打印bugreport

  5.7 打印服务

  5.8 打印surfaceFlinger

  5.9 打印window


一、应用启动耗时自测

        adb shell am start -W 包名/类名

1)TotalTime自己的所有Activity的启动耗时。

2)WaitTime应用进程的创建过程 + TotalTime。

        冷启动一般参考TotalTime

二、帧率查看

        adb shell "dumpsys SurfaceFlinger --dispsync |grep mPeriod

        目前系统状态是60帧 ,暂无掉帧状态。

三、Top命令查看系统资源占用

  1. adb shell 进入设备;
  2. 输入 top 即可实时刷新系统资源占用情况,如下图。

3.1 第一行:任务(进程)

  • 537 total:系统现在共有537个进程
  • 1 running:有1个运行中的
  • 501 sleeping:有501个休眠的
  • 0 stopped:有0个stoped状态的
  • 2 zombie:有2个zombie(僵尸)状态的

3.2 第二行:mem状态

  • 3805444k total:物理内存总量
  • 3701864k used:使用中的内存总量
  • 103580k free:空闲内存总量
  • 1936k buffers:缓存的内存量

3.3 第三行:swap交换分区

  • 2293756k total:交换区总量
  • 308136k used:使用的交换区总量
  • 1985620k free:空闲交换区总量
  • 2097388k cached: 缓冲的交换区总量

可用内存数 = Mem的free + Mem的buffers + Swap的cached
所以此台Android设备可用内存数 = 103580k + 1936k + 2097388k= 2,202,904k(约2.2G)

3.4 第四行:cpu状态

  • 800%cpu : CPU总量
  • 10%user: 用户空间占用CPU的百分比
  • 0%nice: 改变过优先级的进程占用CPU的百分比
  • 13%sys: 内核空间占用CPU的百分比
  • 777%idle : 空闲CPU百分比
  • 0%iow : IO等待占用CPU的百分比
  • 0%irq: 硬中断(Hardware IRQ)占用CPU的百分比
  • 0%sirq : 软中断(Software Interrupts)占用CPU的百分比

3.5 第五行:标题

  PID USER         PR  NI VIRT  RES  SHR S[%CPU] %MEM     TIME+ ARGS
  • PID: 进程id
  • USER: 进程所有者
  • PR: 进程优先级
  • NI: nice值。负值表示高优先级,正值表示低优先级
  • VIRT: 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
  • RES: 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
  • SHR: 共享内存大小,单位kb
  • S: 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
  • %CPU: 上次更新到现在的CPU时间占用百分比
  • %MEM: 进程使用的物理内存百分比
  • TIME+: 进程使用的CPU时间总计,单位1/100秒
  • ARGS: 进程名

四、抓取trace.html文件分析

4.1 使用Android Monitor工具

        Monitor工具目录一般在SDK目录的SDK\tools\monitor,基本很少用,Monitor也存在一些兼容问题。

4.2 使用adb shell atrace命令

adb shell "atrace gfx input view wm am sched load idle freq -b 20480 -t 5" > path

        生成的为文本文档,还需要使用systrace.py命令转换为.html:systrace.py --from-file=path。

4.3 使用systrace.py命令

        systrace.py脚本相当于整合了atrace命令,电脑需要配置python运行环境,systrace.py路径在SDK目录的\platform-tools\systrace\systrace.py。

        具体步骤:

  1. 连接设备并adb root;
  2. 切换到system.py文件路径下:cd C:\My Program Files\Android SDK\platform-tools\systrace;
  3. 执行命令,生成html文件:python systrace.py -t 10 gfx input view wm am res rs sched freq idle dalvik -o D:\test\trace.html;
  4. 直接在google浏览器中打开html即可。(如无法打开trace文件,可尝试如下操作:在chrome地址栏中输入”chrome:tracing”,然后点击load按钮load你的trace.html文件。)

 

五、抓取log分析

5.1 设置日志缓冲大小

adb shell logcat -g  setprop persist.logd.size 4M

 5.2 打印crash日志

adb shell logcat -b crash

 5.3 打印常规日志

adb shell logcat > C:\Users\tianbinbin\Desktop\log.txt

 5.4 打印内核日志

adb shell cat /proc/kmsg > C:\Users\tianbinbin\Desktop\kernel.log

 5.5 打印非内核log

adb logcat -b main -b system -b radio -b events -v time > C:\Users\tianbinbin\Desktop\all_user.log

  5.6 打印bugreport

adb bugreport

  5.7 打印服务

adb shell service list packages |grep Notification

  5.8 打印surfaceFlinger

adb shell dumpsys SurfaceFlinger > C:\Users\tianbinbin\Desktop\111.txt

  5.9 打印window

adb shell dumpsys window > C:\Users\tianbinbin\Desktop\222.txt

 


目录

一、应用启动耗时自测

二、帧率查看

三、Top命令查看系统资源占用

3.1 第一行:任务(进程)

3.2 第二行:mem状态

3.3 第三行:swap交换分区

3.4 第四行:cpu状态

3.5 第五行:标题

四、抓取trace.html文件分析

4.1 使用Android Monitor工具

4.2 使用adb shell atrace命令

4.3 使用systrace.py命令

五、抓取log分析

5.1 设置日志缓冲大小

 5.2 打印crash日志

 5.3 打印常规日志

 5.4 打印内核日志

 5.5 打印非内核log

  5.6 打印bugreport

  5.7 打印服务

  5.8 打印surfaceFlinger

  5.9 打印window

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CCF-CSP认证考试 202305-3 解压缩 100分题解

更多 CSP 认证考试题目题解可以前往:CSP-CCF 认证考试真题题解 原题链接: 202305-3 解压缩 时间限制: 5.0s 内存限制: 512.0MB 题目背景 西西艾弗岛运营公司是一家负责维护和运营岛上基础设施的大型企业。在公司内,…

如何注册 onlyFans? onlyFans 如何订阅教程

一、onlyFans 介绍 OnlyFans 是一个在线平台,允许创作者为他们的内容提供订阅服务,通常是成人内容或独家内容。该平台于2016年成立,起初被认为是一个用于演员、模特、艺术家和其他创意行业从业者分享内容的地方。随着时间的推移,O…

linux命令(四)

操作文件 创建文件 touch test.txt修改文件后缀 mv test.txt test.sh将test.txt 改为test.sh 查看当前路径下的文件 ls如果你想知道你现在是在哪个目录下,可以使用pwd命令(不要认为pwd是密码的意思,pwd 是Print Working Directory的缩写) pwd查看文…

初识二叉树

文章目录 一.什么是树二.什么是二叉树三.二叉树的访问次序四.特殊的二叉树五.求结点个数六.平衡二叉树总结 一.什么是树 树是由一个集合以及在该集合上定义的一种关系构成的。 集合中的元素称为树的节点,所定义的关系称为父子关系。 父子关系在树的节点之间建立了一…

【C++ leetcode】双指针问题

1. 611. 有效三角形的个数 题目 给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 题目链接 . - 力扣(LeetCode) 画图 和 文字 分析 判断是否是三角形要得到三边,由于遍历三边要套三层循环&#x…

LeetCode每日一题【24. 两两交换链表中的节点】

思路:先创建虚拟头结点,再用双指针,两两交换 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr…

推荐几个自动化测试实战练习项目

学习自动化测试最难的是没有合适的项目练习。 测试本身既要讲究科学,又有艺术成分,单单学几个 API 的调用很难应付工作中具体的问题。 你得知道什么场景下需要添加显性等待,什么时候元素定位需要写得更加优雅,为什么需要断言这个…

js处理数组分类

const obj [{"groupingType": "1","remark": "梨花带雨","totalRmbMoney": 7,"kyeGroupingType": "广州一组"},{"groupingType": "2","remark": "99","…

权限管理系统-0.6.0

七、员工端审批 员工端审批的大致流程如下图: 这个模块目的是实现员工在微信端的审批提交和处理功能,为了与之前的管理系统区分开,新建一个controller完成这些功能。 7.1 查询审批分类和审批模板 7.1.1 后端接口 //controller Api(tags …

【论文速读】| 视觉对抗样本:突破对齐的大语言模型

本次分享论文为:Visual Adversarial Examples: Jailbreak Aligned Large Language Models 基本信息 原文作者:Xiangyu Qi, Peter Henderson, Kaixuan Huang, Ashwinee Panda, Mengdi Wang, Prateek Mittal 作者单位:普林斯顿大学、斯坦福大…

使用npm创建一个全局的cli命令,就像vue-cli一样

我们用过vue-cli等工具包,全局安装之后,我们可以直接使用vue create等命令,实际上能够这样使用的原因,就是使用了package.json里面的bin字段注册命令。接下来就以一个脚本文件为例子为大家演示一下bin是如何发挥作用的。 创建项目…

数据库引论:2.SQL简介

SQL(Structured Query Language,结构化查询语言) 2.1 SQL查询语言概览 SQL语言包含 数据定义语言(Data-Definition Language,DDL)。SQL DDL提供定义关系模式、删除关系以及修改关系模式的命令。数据操纵语言(Data-Manipulation Language,DML)。SQL DML提供从数据库中查询信息…

PLC通过智能网关采用HTTP协议JSON文件对接MES等服务系统平台

智能网关IGT-DSER集成了多种PLC的原厂协议,方便实现各种PLC、智能仪表通过HTTP协议与MES等各种系统平台通讯对接。PLC内不用编写程序,通过网关的参数配置软件(下载地址)绑定JSON文件的字段与PLC寄存器地址,配置URL即可。支持POST/GET/PUT等多…

基于YOLOv5s的电动车入梯识别系统(数据集+权重+登录界面+GUI界面+mysql)

本人训练的yolov5s模型,准确率在98.6%左右,可准确完成电梯内检测电动车任务,并搭配了GUI检测界面,支持权重选择、图片检测、视频检测、摄像头检测、识别结果拍照和在线标注数据集等功能。 并且为用户提供了登录注册功能&#xff0…

python版:使用TotalSegmentator工具可在1分钟内自动分割全身117个器官,附批量技巧

TotalSegmentator用于对 CT 图像中超过 117 个类别进行分割的工具。它接受了各种不同 CT 图像(不同扫描仪、机构、协议等)的训练,因此应该适用于大多数图像。大部分训练数据集可以从Zenodo下载(1228 个主题)。您还可以…

由浅到深认识Java语言(7):方法(函数)

该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…

ZYNQ EMIO MIO

1 概述 先来了解GPIO的BANK分布,在UG585文档GPIO一章中可以看到GPIO是有4个BANK, 注意与MIO的BANK区分。 BANK0 控制32个信号,BANK1控制22个信号,总共是MIO的54个引脚,也就是诸如 SPI,I2C,USB,SD 等 PS 端外设接口&am…

【二进制求公约数】【数学】【数论】2543. 判断一个点是否可以到达

本文涉及知识点 二进制求公约数 LeetCode2543. 判断一个点是否可以到达 给你一个无穷大的网格图。一开始你在 (1, 1) ,你需要通过有限步移动到达点 (targetX, targetY) 。 每一步 ,你可以从点 (x, y) 移动到以下点之一: (x, y - x) (x - y…

基于python+vue灾害应急救援平台flask-django-php-nodejs

灾害应急救援平台的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓,iOS相比较起来,…

(二)RabbitMQ实战——rabbitmq高可用集群搭建

前言 本节内容是关于rabbitmq高可用集群的部署搭建,使用的是centos7系统,我们准备三台服务器作为rabbitmq的高可用服务器,rabbitmq集群本身不是天然支持高可用的,我们通过配置rabbitmq服务器的镜像队列,以确保消息可以…