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,一经查实,立即删除!

相关文章

【CSP考点回顾】C++标准库加速输入输出

C标准库加速输入输出 ios_base::sync_with_stdio(false);:取消C标准库(iostream)与C标准库(stdio)之间的同步。默认情况下,为了保证C的cin、cout与C的stdin、stdout能够互相交换数据,它们之间会…

基于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…

洛谷团队欢迎你的加入!

前言 我开这个团队的目的,是可以让大家有什么不会的题目讨论讨论,互相帮助,希望大家能加入。 我的团队——VirgoPHL 作用 我会不定期想一些题目,或出一些比赛,大家可以积极参加。 结尾 真心希望大家参加。

详细讲解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…

嵌入式领域机器学习入门指南

基本概念 机器学习是一门使计算机无需进行明确编程即可学习的科学。它主要利用数据或以往的经验,以此来改进计算机自身的性能。以下是一些核心概念: 监督学习: 训练数据包含输入和预期输出,模型的目的是学习这两者之间的映射关系。无监督学习: 训练数据只包含输入,没有标签…

C++ 11:基于范围的 for 循环

基于范围的for 循环(Range-based for loop)是 C11 标准引入的一项特性,它提供了一种更简洁、更安全的遍历容器(如数组、向量等)的方式。 与传统的 for 循环相比,基于范围的 for 循环自动处理迭代&#xff…

华为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…

​LeetCode解法汇总303. 区域和检索 - 数组不可变

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:. - 力扣(LeetCode) 描述: 给定一个整数数组 nums,处理…

面试算法-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的数据(方便快捷,但是中文易乱码)

Spring(创建对象的方式3个)

3、Spring IOC创建对象方式一&#xff1a; 01、使用无参构造方法 //id&#xff1a;唯一标识 class&#xff1a;当前创建的对象的全局限定名 <bean id"us1" class"com.msb.pojo.User"/> 02、使用有参构造 <bean id"us2&…

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

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

c语言:从1加到N的和

从1加到N的和 任务描述 老师给你布置一道编程题&#xff0c;输出从1加到N的和。 输入格式: 一个整数N&#xff08;1<N<100000&#xff09;。 输出格式: 一个整数&#xff0c;从1加到N的和。 输入示例 10输出示例 55代码 #include<stdio.h> int main(){int …