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

随机推荐

  • 精华液和精油是一种东西吗?有何区别?

    精华液和精油不是一种东西,其功效和使用手法都不一样哦!精华液通常是某一系列产品中所含美容成分浓缩的产品,往往都是量少价贵,在化妆水和乳液(或面霜)之间使用,精华液可加强该系列产品的功效,比如美白系列中的美白精华液,可以加强美白效果;抗衰老系

    2024-04-15
    46300
  • nivea妮维雅水感防晒乳真假辨别对比图

    nivea妮维雅水感防晒乳我是代购买的,担心自己买到了假货,想学习下如何分辨真假。那么nivea妮维雅水感防晒乳真假怎么辨别下面我为你提供妮维雅防晒乳对比图。真假辨别瓶身正面:正品的瓶身正面下方是有一行日文文字的,而假货的该位置却是

    2024-04-15
    34200
  • 请教一下相宜本草、za、卡尼尔、妮维雅、玉兰油、欧莱雅、百草集的明星产品

    1欧莱雅是做头发产品起家的 染发和头发护理产品是它真正的明星产品 毫无疑问的全球第一镇牌之宝 清润全日保湿水精华 ----- 2 我觉得是玉兰油7重修护那个霜。电视天天打广告的那个3相宜本草洗面的:有控油祛痘洗面膏,这个油性的用很不错,控油

    2024-04-15
    48200
  • 男士精华液推荐

    男士精华液推荐有:兰蔻小黑瓶、科颜氏精华液、OLAY流光瓶精华、HR赫莲娜绿宝瓶精华、乐敦cc精华液等。1、兰蔻小黑瓶适合任何肤质的一款精华,对于敏感肌、痘痘肌很友好。成分温和安全。鸡蛋清的质地上脸清爽,不会黏腻。2、科颜氏精华液用起来也非

    2024-04-15
    43900
  • 妮维雅身体乳成分表,妮维雅身体乳成分分析

    甘油、丙二醇、红没药醇、抗坏血酸磷酸酯钠、光滑金虎尾果提取物、甘油葡糖苷、葡萄、柠檬酸、卡卡里果提取物、光果甘草根粉、花生酸、十三烷醇聚醚-9、苯基苯并咪唑磺酸钠、EDTA 三钠、油酸、肉豆蔻酸、棕榈酸、鲸蜡醇等等,其中光滑金虎尾果提取物对

    2024-04-15
    29900
  • 川奈之汀护肤品怎么样

    挺好的。1、川奈之汀护肤品采用纯天然植物成份,不含香精香料。2、川奈之汀护肤品通过敏感皮肤测试,按照欧洲制药标准生产。3、川奈之汀护肤品所含舒缓敏感肌肤药理成份能够切实解决肌肤问题。

    2024-04-15
    35900
  • 养生之道是什么意思?养生之道成语造句和典故

    成语名称:养生之道 yǎngshēngzhīdào欢迎您访问本页,本页的主要内容为解释成语养生之道的出处和来源,以及回答养生之道的意思是什么,其中包含英语翻译和造句,同时提供了和SOSO百科的链接地址,为您全方位的

    2024-04-15
    26800

发表评论

登录后才能评论
保存