Android客户端性能测试—CPU、启动时间(二)

时间:2024-03-21 12:46:28


前言:

1.继上篇“内存”,这篇讲述的是“CPU”和“启动时间”

2.准备工作,及如何获取进程PID,请参见上篇文章

Android客户端性能测试—内存(一)


一、查取android手机的整体CPU利用率

1、top命令

(1).打开cmd命令进入adb shell 环境

(2).输入 top -n 1 -d 5

Android客户端性能测试—CPU、启动时间(二)

2、命令分析

-m:最多显示多少个进程

-n:刷新次数

-d:刷新间隔(5s)

-s:按哪列排序

-t:显示线程,而不是进程

3、CPU占用率:User 28%, System 26%, IOW 0%, IRQ 0%

User:用户进程

System:系统进程

IOW:IO等待时间

IRQ:硬中断时间

4、CPU使用情况:User 320 + Nice 0 + Sys 297 + Idle 518 + IOW 2 + IRQ 1 + SIRQ 2 = 1140

User :处于用户态的运行时间,不包含优先值为负进程

Nice  :优先值为负的进程所占用的CPU时间

Sys    :处于核心态的运行时间

Idle    :  除IO等待时间以外的其它等待时间

IOW IO:等待时间

SIRQ  : 软中断时间

IRQ    :硬中断时间

5、进程属性: PID PR CPU% S  #THR     VSS     RSS PCY UID      Name

PID :进程在系统中的ID

CPU%  : 当前瞬时所以使用CPU占用率

S :进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。

#THR :程序当前所用的线程数

VSS: 虚拟耗用内存(包含共享库占用的内存)

RSS: Resident Set Size 实际使用物理内存(包含共享库占用的内存)

PCY:进程/线程的调度策略

UID :运行当前进程的用户id

Name:进程名称


二、查取某个应用的CPU占用情况

1、dumpsys cpuinfo命令

输入:dumpsys cpuinfo pid/包名

Android客户端性能测试—CPU、启动时间(二)

2.8%:总的CPU占用率

22370:PID

1% :在用户中花1%的时间

1.8%:在内核中花1.8%时间


三、启动时间:

1、概念:

冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。

热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。

首次启动:首次启动严格来说也是冷启动,之所以把首次启动单独列出来,一般来说,首次启动时间会比非首次启动要久,首次启动会做一些系统初始化工作,如缓存目录的生产,数据库的建立,SharedPreference的初始化,如果存在多 dex 和插件的情况下,首次启动会有一些特殊需要处理的逻辑,而且对启动速度有很大的影响,所以首次启动的速度非常重要,毕竟影响用户对 App 的第一映像。

2、am start -W packagename/activity 命令 (W大写)

通过 logcat -b events -s am_activity_launch_time 命令可获取包名和activity
Android客户端性能测试—CPU、启动时间(二)

Android客户端性能测试—CPU、启动时间(二)

WaitTime:包括前一个应用 Activity pause 的时间和新应用启动的时间,稍微大点。

TotalTime: 表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用Activity pause的耗时(真正的启动耗时)

ThisTime: 表示一连串启动 Activity 的最后一个 Activity 的启动耗时