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

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

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

相关文章

基于tcp协议的网络通信(基础echo版.多进程版,多线程版,线程池版),telnet命令

目录 基础版 思路 辅助函数 服务端 代码 运行情况 -- telnet ip 端口号 传输的数据为什么没有转换格式 客户端 思路 代码 多进程版 引入 问题 解决 注意点 服务端 代码 运行情况 进程池版(简单介绍) 多线程版 引入 问题解决 注意点 服务端 代码 …

嵌入式Linux 内核的内存管理方法

内存管理的主要工作就是对物理内存进行组织,然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。 虚拟地址的作用 如果用户进程直接操作物理地址会有以下的坏处: 1、 用户进程可以直接操作内核对应的内存,破坏内核运行。 2、 用户进程也会破坏其他进程的运行 …

连号区间数c++

题目 输入样例1: 4 3 2 4 1输出样例1: 7输入样例2: 5 3 4 2 5 1输出样例2: 9样例解释 第一个用例中,有 77 个连号区间分别是:[1,1],[1,2],[1,3],[1,4],[2,2],[3,3],[4,4][1,1],[1,2],[1,3],[1,4],[2,2…

详细讲解c语言结构体、联合体、枚举

目录 1、结构体类型声明 1.1结构体的定义 1.2 结构体变量的声明 1.3 结构体变量的创建和初始化 2、如何使创建的结构体所占内存最小 2.1 结构体内存对齐-存储 2.2 通过宏offsetof计算结构体内变量的偏移量 2.3 如何通过宏offsetof计算数组的偏移量 2.4 为什么存在内存对…

吴恩达机器学习笔记 二十四 决策树模型 学习过程 什么时候停止分裂 如何选择结点特征

案例:识别小猫,上面这个分类的特征 x 采用分类值(几个离散的值) 决策树最顶端的结点称根结点(root node),除了根结点和叶子结点之外的叫决策结点(decision node),最底层的叫叶子结点(leaf node)&#xff0c…

华为openEuler系统卸载jdk

华为openEuler系统卸载jdk 1.查看openEuler上已安装的 Java 版本: 在终端中运行以下命令,查看系统中已经安装的 Java 版本。 sudo alternatives --config java这将列出已安装的 Java 版本,你可以看到当前使用的是哪个版本 2.卸载 Java&am…

Python函数学习

Python函数学习 1.函数定义 在函数定义阶段只检查函数的语法问题 2.实参形参 ​​​​总结: (1)位置参数就是经常用的按照位置顺序给出实参的值; (2)关键字实参形式:key123;放在…

轻松打造完美原型:9款在线工具推荐

早年,UI设计师选择的工具有限,功能相对单一,大多数在线原型设计工具都是国外的,语言和网络都增加了设计工作的负担。如今,国内外有许多在线原型设计工具,不仅可以在浏览器上使用,而且还具有团队…

基于SpringBoot的后勤管理系统【附源码】

后勤管理系统开发说明 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myecli…

面试算法-51-翻转二叉树

题目 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 解 class Solution {public TreeNode invertTree(TreeNode root) {dfs(root);re…

Hybrid第二次雪梨作业

作业要求: 利用ReactNative和Axios完成以下效果。 注意: 1、RN不能直接引用svg图片,需使用第三方库,可将logo图片换成百度logo 2、搜索框可不要搜索图标 3、“全部”“精华”等前5项类型切换功能要实现(“客户端测试可不写”,接口没给出参数值),调用 https://cnodejs…

arcgis数据导出到excel

将arcgis属性数据导出到excel: 1) 工具箱\系统工具箱\Conversion Tools.tbx\Excel\Excel 转表 2)用excel打开导出的图层文件中后缀为.dbf的数据(方便快捷,但是中文易乱码)

phpstudy自定义安装mysql8.3并启动

phpstudy自定义安装mysql8.3并启动 先去官网:https://dev.mysql.com/downloads/下载压缩包文件 然后按下面的图片一步一步操作 选择版本,选择第一个压缩包文件,下载 下载完成后,解压到phpstudy环境目录下,如下图 然后进入mysq…

MySQL | CRUD

目录 1. Create 2. Retrieve 2.1. SELECT列 2.1.1. 全列查询 2.1.2. 指定列查询 2.1.3. 查询字段为表达式 2.1.4. 为查询结果指定别名 2.1.5. 结果去重 2.2. WHERE条件 2.2.1. 年龄小于19的同学 2.2.2. id在2~3的同学 2.2.3. id为1和4的同学 2.2.4. 姓张的同学及张…

集成学习 | 集成学习思想:Bagging思想

目录 一. Bagging思想1. Bagging 算法2. 随机森林(Random Forest)算法 在正文开始之前,我们先来聊一聊什么是集成学习? 集成学习是一种算法思想:将若干个弱学习器分组之后,产生一个新的学习器 弱学习器指预测误差在50%以下的学习器…

VS Code安装Live Server插件搭建web网页结合内网穿透实现公网访问

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…

性能测试-Jmeter常用元件基础使用

一、Jmeter元件 #线程组 添加HTTP请求 #配置元件 配置元件内的元件都是用于进行初始化的东西 #监听器 监听器主要是用来获取我们使用取样器发送请求后的响应数据相关信息 #定时器 定时器主要用来控制我们多久后执行该取样器(发送请求) #前置处理器 前置处…

【Python循环3/5】条件循环语句

目录 导入 条件循环 边界条件 while循环 死循环 while循环与for循环的区别 总结 知识图谱 导入 我们已经学习了如何利用for语句实现代码重复执行的循环结构。通过遍历列表,输出其中的每一个元素。 for循环就像是排队办事,一个个进入,轮…

爬虫逆向实战(35)-MyToken数据(MD5加盐)

一、数据接口分析 主页地址:MyToken 1、抓包 通过抓包可以发现数据接口是/ticker/currencyranklist 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个code参数 请求头是否加密? 无 响应是否加密&#xf…

HarmonyOS(鸿蒙)快速入门

一:下载开发工具 鸿蒙的开发工具叫DevEco 下载点击 其他部分都一直next 就行,这个页面出现的install 建议都点击install 然后单独选择安装目录 可能存在的问题 就是之前安装nodejs(比如自己开发web或者RN等情况)版本低 等情况 所以建议你单独安装一次 …