Android性能测试(内存、cpu、fps、流量、GPU、电量)——adb篇

Android性能测试(内存、cpu、fps、流量、GPU、电量)——adb篇,第1张

3)查看进程列表:adb shell "ps",同时也能获取到应用的UID,方式如下(不需root权限):

u0_a开头的都是Android的应用进程,Android的应用的UID是从10000开始,到19999结束,可以在Processjava中查看到(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),u0_a后面的数字就是该应用的UID值减去FIRST_APPLICATION_UID所得的值,所以,对于截图这个应用进程,它是u0_a155,按前面的规制,它的UID就是155 + FIRST_APPLICATION_UID = 10155。

VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)

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

PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)

USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

使用 adb shell "dumpsys meminfo -s <pakagename | pid>"命令,输出结果分以下4部分:

PS:在apk内调用运行获取其他app的内存数据则需要root权限

adb命令:adb shell dumpsys gfxinfo <package | pid>

正常情况下帧率应该在1667ms左右,1秒60帧,执行结果如下:

详细计算方法如下:

还有一个命令是: adb shell dumpsys SurfaceFlinger --latency LayerName

其中LayerName在各个不同系统中获取的命令是不一样的

在Android 6系统直接就是SurfaceView

在Android 7系统中可以通过 dumpsys window windows | grep mSurface | grep SurfaceView 然后通过数据截取到

在Android 8系统中可以通过 dumpsys SurfaceFlinger | grep android包名获取到

执行命令结果如下:

计算方法比较简单,一般打印出来的数据是129行(部分机型打印两次257行,但是第一部分是无效数据,取后半部分),取len-2的第一列数据为end_time,取len-128的第一列数据为start_time

fps = 127/((end_time - start_time) / 10000000)

至于为啥要取第一列数据,这里不做过多介绍,欢迎参看这两篇文章

老罗的文章SurfaceView原理

Android性能测试之fps获取

至于为啥要处于1000000,因为命令打印出来的是纳秒单位,要转为毫秒进行计算,127就是因为命令一次打印出来127帧的数据而已

有两种方法可以获取

1) adb shell "top -n 5 | grep <package | pid>" ,第三列就是实时监控的CPU占用率(-n 指定执行次数,不需root权限),这边top命令执行需要2到3s左右,一般可以采用busybox 的top命令执行,效率会快很多

2) adb shell "dumpsys cpuinfo | grep <package | pid>"

两种方法直接区别在于,top是持续监控状态,而dumpsys cpuinfo获取的实时CPU占用率数据

adb命令:adb shell "dumpsys batterystats < package | pid>" (Android 50后引入)

获取单个应用的耗电量信息,具体返回结果待研究

adb命令:adb shell "dumpsys battery"

出现信息解读:

AC powered:false 是否连接AC(电源)充电线

USB powered:true 是否连接USB(PC或笔记本USB插口)充电

Wireless powered:false 是否使用了无线电源

status: 1 电池状态,2为充电状态,其他为非充电状态

level:58 电量(%)

scale: 100 电量最大数值

voltage: 3977 当前电压(mV)

current now: -335232 当前电流(mA)

temperature:355 电池温度,单位为01摄氏度

adb 命令:adb shell "dumpsys< package | pid> | grep UID" [通过ps命令,获取app的UID(安装后唯一且固定)]

adb shell cat /proc/uid_stat/UID/tcp_rcv [cat为查看命令,读取tcp_rcv获取应用接收流量信息(设备重启后清零)]

adb shell cat /proc/uid_stat/UID/tcp_snd [cat为查看命令,读取tcp_snd获取应用发送流量信息(设备重启后清零)]

计算流量消耗步骤:

或者还有一种方式获取应用流量消耗:

首先判断类型:

cat /sys/class/thermal/thermal_zone/type

只有红框框出来的是有效的

cat /sys/class/thermal/thermal_zone/temp

获取CPU温度

dumpsys battery | grep temperature 单位01摄氏度

获取/proc/stat文件内容(无权限限制)

总的cpu时间片是 total = user+nice+system+idle+iowait+irq+softirq

忙碌时间为 notidle = user+nice+system +iowait+irq+softirq

cpu使用率计算方法为,先取开始的total值和忙碌时间notidle,隔一段时间片,再取一次计算total2,notidle2, cpuuse = (notidle2 – notidle) 100 / (total2 - total)%

PS:由于Android 8权限收紧,在Android 8系统手机内apk内读取文件内容为空,需要shell权限才可获取文件内容,下同

读/sys/devices/system/cpu/cpuX/cpufreq/scaling_cur_freq文件的值,X不定,看是几核手机,scaling_cur_freq是否存在也不一定,需要判断

至于为啥不取cpuinfo_cur_freq文件的值,原因是android 6,7系统获取的时候,这个文件shell没有读取权限,需要root权限

参考文章: https://blogcsdnnet/long_zhimeng/article/details/45934899

Android 6,7系统可执行

dumpsys window windows | grep "mCurrentFocus"

执行结果一般为类似:

mCurrentFocus=Window{81caaa5 u0 comtencentmobileqq/comtencentmobileqqactivitySplashActivity}

按照一定规则把comtencentmobileqq提取出来即可

直接apk内读取文件即可,不需要shell权限(支持到Android8)

Gpu使用率获取:会得到两个值,(前一个/后一个)100%=使用率

adb shell cat /sys/class/kgsl/kgsl-3d0/gpubusy

Gpu工作频率:

adb shell cat /sys/class/kgsl/kgsl-3d0/gpuclk

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq

Gpu最大、最小工作频率:

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freq

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/min_freq

Gpu可用频率

adb shell cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_frequencies

Gpu可用工作模式:

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_governors

Gpu当前工作模式:

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/governor

第一步:在手机桌面中点开设置,第二步:下拉屏幕到底部,点开关于手机,第三步:在版本号中连续点击五次以上开启开发者选项,第四步:返回到设置桌面,点开辅助功能,然后点开开发者选项,第五步:新页面中下拉屏幕到底部,点开性能优化,第六步:新页面中点开性能监视器,第七步:点击显示性能监视器和显示FPS信息两项按钮开启,就可以显示当前帧率了。

荣耀是华为的子品牌。荣耀手机和华为手机并不是作为同一个品牌产生的。荣耀品牌诞生于2013年12月16日,坚持以互联网创新的轻资产模式,致力于创造属于每个人的智慧新世界。荣耀以创新、品质、和服务作为战略控制点,坚持研发及前瞻性技术的持续投入,通过手机及智能生态产品,为全球消费者带来极致的产品与服务,打造创新、高级、自由和可信赖的全场景智慧生活体验。

测试方法一:系统自带-开发者模式

实际上,为了方便开发者测试,安卓本身就内置了流畅度检测的功能。不过,这需要我们开启隐藏的开发者选项。如果你在用原生系统,那么开启开发者选项的方法很简单,进入到设置菜单“关于手机”页面,点击数次“版本号”,即可开启开发者选项。如果用的是其他ROM,方法也许有所不同,比如说魅族的Flyme开启开发者选项的方法是在拨号界面输入“##6961##”,其他机器方法也各有不同,大家可以参照厂商的说明。

进入到开发者选项,可以看到有“GPU呈现模式分析”的选项,开启后即可以条形图和线形图的方法显示系统的界面响应速度,可以用以观察系统流畅度。那么要如何根据曲线判断系统是否流畅呢?实际上这个曲线表达的是GPU绘制每一帧界面的时间,只要不超过顶部绿线,都可以视为足够流畅。

开启GPU呈现模式分析

只要下方的曲线不超过绿线,都可以视之为流畅

使用系统自带方法测试流畅度的好处很多,首先是数据准确,系统肯定最知道自己的帧率如何;其次是不占资源,对流畅度测试的影响比较小。那么这个方法是否万无一失呢?其实还是有一些缺点的。比如说利用CPU渲染UI的App界面,就无法得到测试结果(当然这些界面基本无一例外卡顿无比,不用测也知道不流畅);当系统停顿了一下,例如微博加载时,响应速度会大幅增加,曲线瞬间突破绿线——这情况不能说不流畅,因为这属于内容和界面先后响应的机制,如果光凭曲线是否突破绿线判断是否流畅,未免太过局限。

1在设置里打开GPU呈现模式分析。点击Android设备的“设置”->"开发者选项",然后勾选“GPU显示配置文件”。

2  1点击Android设备的“设置”->"开发者选项",然后勾选“GPU显示配置文件”。重启我们的应用。启动应用以后,在应用的页面上做滑动

2lijiedeMacBook-Air:~ lijie$ adb shell dumpsys gfxinfo comdianpingv1>fpstxt

3打开生成的fpstxt,找到Profile data in ms这部分数据。

4为了看得更直接,我们可以把数据放到Excel中,然后以图表的形式进行查看。

5从图中可以看出来,我这个应用的流畅度是很低的,正常情况下帧率应该在16ms左右,如果1秒60帧的话,而且Execute时间太长!所以是需要进行优化的。

点评APP:

 

a: "Draw" : 创建显示列表(display lists,记录所有view对象的绘制指令)的时间开销。

b: "Process" : 执行显示列表中绘制指令的时间。UI视窗中的View数量越多,需要执行的绘画命令就越多。

c: "Execute" : 将一帧图像交给合成器compostior的时间。这部分占用的时间通常比较少

测试方法二:FPS Meter测试安卓帧数

FPS Meter是一款非常实用的小软件,能够用数字实时显示安卓界面的每秒帧数,非常直观。此外,FPS Meter还可以显示最大帧数、最小帧数以及平均帧数,用来评价安卓流畅度极具价值。由于涉及到了系统功能,所以FPS Meter需要root。如果你打算尝试,请先root机后再使用。

软件名称:

FPS显示(FPS Meter)

软件版本:

15

软件大小:

218KB

软件授权:

免费

适用平台:

Android

下载地址:

http://dlpconlinecomcn/download/76451html

FPS Meter的使用很简单,开启App后启动服务即可。在App内,你可以选择帧数显示的位置,以及是否开启平均帧数、最低/最高帧数显示。开启服务后,即可看到有帧数显示于界面上。这里要注意,使用FPS Meter测量帧数需要在开发者选项中停用HW叠加层才会比较准确。

FPS Meter可以显示最大最小帧数以及平均帧数

FPS Meter可以测试界面帧数,不过某些手机如果界面静止,帧数会为0。FPS Meter除了测量系统界面帧数外,还可以用来测量游戏的帧数,所以用FPS Meter来测试某部安卓机游戏性能多强也是个很好的选择。

当然,FPS Meter也并非十全十美。由于属于第三方App,所以可能会有一些兼容性问题。某些安卓机或者ROM使用FPS Meter可能会不兼容,即使成功开启了帧数显示也没法测量到准确数值,而某些设备使用FPS Meter甚至会死机。不过在大多数情况下,这款App还是相当值得信任的。

安卓在多个版本中都通过新技术提升了流畅度,比如说安卓23引入Dalvik、安卓40引入GPU界面绘制、安卓41引入黄油计划、安卓43引入Trim以及安卓44引入ART等等。

H5页面加载速度:windowperformancetiming

Android以上测试方法不适用h5页面

如何分析页面整体加载速度:

主要是查看指标值PAGET_页面加载时间,此指标指的是页面整体加载时间但不含(onload事件和redirect), 此指标值可直接反应用户体验, 从此项指标可以知道指定某时间段的页面加载速度值,以及和天,周,月的对比状况也可以查询指标ALLT_页面完全加载时间, 可以查询到从浏览器开始导航(用户点击链接或在地址栏输入url或点刷新,后退按钮)到页面onload 事件js完全跑完的所有时间如果发现页面加载速度有增加或减少,则可以分项查询前面表格中的每个指标值,总的来说他们的关系如下:

dom开始加载前所有花费时间=重定向时间+域名解析时间+建立连接花费时间+请求花费时间+接收数据花费时间

pageLoadTime页面加载时间=域名解析时间+建立连接花费时间+请求花费时间+接收数据花费时间+解析dom花费时间+加载dom花费时间

allLoadTime页面完全加载时间=重定向时间+域名解析时间+建立连接花费时间+请求花费时间+接收数据花费时间+解析dom花费时间+加载dom花费时间+执行onload事件花费时间

resourcesLoadedTime资源加载时间=解析dom花费时间+加载dom花费时间

流畅度暂时没有发现好用的测试衡量工具,开发层面了解,主要是根据log分析

苹果手机测掉帧的方法/步骤:

1我们先到应用商店搜索“手机硬件管家”,找到后然后点击下载安装。安装完后点击打开。

2打开后我们找到CPU项,点击进去。向下滑,我们就可以查看手机的帧数(即主频)。在这里我们可以查看标准主频,实时主频,也可以查看帧数变化图。

3苹果手机的最大主频是14GHz,你可以查看下面的形状图,那就是帧数变化情况走势图。

对于手机流畅度测试除了系统自带的功能能测试手机流畅度之外,那么就没有其它方法能测试手机流畅度了么?那么接下来由小编为大家推荐一款小工具FPS显示(FPS Meter),你可以通过它快速的测试自己手机流畅度,接下来一起看看吧!

  FPS Meter是一款非常实用的小软件,能够用数字实时显示安卓界面的每秒帧数,非常直观。此外,FPS Meter还可以显示最大帧数、最小帧数以及平均帧数,用来评价安卓流畅度极具价值。由于涉及到了系统功能,所以FPS Meter需要root。如果你打算尝试,请先root机后再使用。

  FPS Meter的使用很简单,开启App后启动服务即可。在App内,你可以选择帧数显示的位置,以及是否开启平均帧数、最低/最高帧数显示。开启服务后,即可看到有帧数显示于界面上。这里要注意,使用FPS Meter测量帧数需要在开发者选项中停用HW叠加层才会比较准确。

  FPS Meter除了测量系统界面帧数外,还可以用来测量游戏的帧数,所以用FPS Meter来测试某部安卓机游戏性能多强也是个很好的选择。

  当然,FPS Meter也并非十全十美。由于属于第三方App,所以可能会有一些兼容性问题。某些安卓机或者ROM使用FPS Meter可能会不兼容,即使成功开启了帧数显示也没法测量到准确数值,而某些设备使用FPS Meter甚至会死机。

自从带“吓人的技术”的荣耀Play发布后,花粉们就开启了测试帧率的热潮。不过也许直至今日,大多数花粉依然不会测试帧率,但看到别人发布的帖子后,又总担心真伪,所以择城为了让所有数据都公开透明,特写这篇教程,让所有人测帧率手到擒来!

首先,我们需要下载测试帧率的工具,然后进行安装,比如手机端测试软件Gamebench App,这是一款不需要root就能测试手机游戏帧率的工具,所以对大多数花粉来说,要方便的多。

安装APP完成后,你可以注册,可以登陆,但这会还不能使用,你还必须接着做完以下步骤才能继续使用它。

一、打开USB测试

因为运行打包文件中的exe文件,就必须获得USB调试权限,所以首先第一步必须打开开发者模式,因为USB调试在开发者模式里面。

大部分手机是默认隐藏开发人员选项的,那我们该如何把它调用出来呢?打开设置-系统-关于手机,连续点击“版本号”7次,根据提示输入锁屏密码,然后屏幕上会提示“您已处于开发者模式“。

然后返回系统,重新点击进入,我们就能看到开发人员选项开关了,进入找到USB测试。

二、安装华为手机助手

虽然运行EXE需要获取USB调试权限,但是如果手机连接电脑后,没有手机驱动,也是运行不了的,所以我们有必要下载驱动成程序。

最简单获取驱动的方法就是下载华为手机助手,当你手机连接电脑后,如果电脑已经安装了华为手机助手,会自动弹出提示框,提示框会显示仅充电,传文件,传照片三个选项,记得选择传文件。

然后华为助手会提示你安装等一系列步骤,按照提示步骤操作就可以完成驱动的安装,成功安装驱动后,华为手机助手会自动显示手机屏幕以及型号。

注意:记得华为手机助手安装到手机端的手机助手,你不管他提示什么都不用搭理,因为手机端的手机助手是用作WIFI连接的,我们需要的是USB连接,所以不用管他。

请先root手机获得权限后,下载并安装FPS Meter,该软件能用数字实时显示每秒帧数,非常直观。此外,FPS Meter还可以显示最大帧数、最小帧数以及平均帧数,用来评价手机流畅度极具价值。

开启App后启动服务,可以选择帧数显示的位置,以及是否开启平均帧数、最低/最高帧数显示。注意,使用FPS Meter测量帧数需要在开发者选项中停用HW叠加层才会比较准确。

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/shuma/775730.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-06
下一篇2023-08-06

随机推荐

  • tornado是什么意思啊?

     TornadoTornado代表嵌入实时应用中最新一代的开发和执行环境。   Tornado 包含三个完整的部分:   (1)Tornado系列工具, 一套位于主机或目标机上强大的交互式开发工具和使用程序;   (2)VxWorks 系统

    2024-04-15
    57100
  • 一个人的精神崩溃了会怎么样?、

    生活中有精神支柱崩塌的现象,此时会产生末日感,以前建立起来的立身之基,包括信念、才能、健康、亲情、物质、人脉等等,一时间失去了发挥的平台。在新规则下,它们没有上场的机会,眼看着原先不如自己的人不断地与自己擦身而过走上舞台,而自己成了孤独的观

    2024-04-15
    49200
  • 福州最好吃的牛排店

     几乎所有福州的西餐厅都会有牛排这一出品,到底哪家的牛排最美味,最能让人垂涎呢相信各位食客会有许多不同的声音,为了满足无数酷爱牛排的吃货之需,我特地为大家精心挑选了福州城中10家出品美味牛排的餐厅,快来看看吧。  福

    2024-04-15
    45500
  • 精华露和精华液的区别

    精华露和精华液的区别在于质地不同、使用方法不同、适合人群不同。1、质地不同精华露是高浓缩后的护肤品,例如著名品牌SK神仙水就是这类型的产品,质地较为粘稠,更适合干性皮肤使用。但对于油性肌肤,因为油脂分泌旺盛的缘故,不太适合多种精华类的护肤品

    2024-04-15
    32300
  • 钻玫白鲜童颜植萃焕肤套盒怎么样

    好。1、功效好:钻玫白鲜童颜植萃焕肤套盒中的护肤产品,是由植物萃取而成,具有很好的保湿和修复功效,因此钻玫白鲜童颜植萃焕肤套盒很好。2、品类齐全:钻玫白鲜童颜植萃焕肤套盒这款套装包含了洁面、爽肤水、面霜和眼霜,可以为肌肤提供多样化选择,因此

    2024-04-15
    49000
  • 妮维雅630一瓶可以用多久

    2个星期。妮维雅630一瓶可以用2个星期,连续使用一个月效果会明显,妮维雅德国拜尔斯道夫公司所有的大型全球护肤品与身体护理品品牌,其发展时间久,发展经验丰富,旨在满足消费者的不同需求。妮维雅630淡斑精华和科颜氏精华相比科颜氏精华好用。妮维

    2024-04-15
    49400
  • 防晒喷雾前10强有哪些?防晒喷雾哪个牌子好用?

    防晒喷雾是近年来比较受欢迎的一种防晒产品,非常适合人们在外出的时候使用。防晒喷雾不仅具有防晒的功效,而且能使皮肤降温,减少皮肤的灼热感,补充皮肤所需的水分,起到保湿效果等,是一款比较价值比较高的产品。那防晒喷雾哪种品牌比较好呢?1、水宝宝超

    2024-04-15
    39900

发表评论

登录后才能评论
保存