文档管理中心

如何进行APP的帧率测试?(转载)

无论是手机端还是PC端,画面的流畅度一直被用户视为衡量应用视觉体验的重要标准。而对开发者来说,FPS通常作为衡量应用是否流畅的标准。


一、FPS是什么?

FPS即Frames per Second(每秒显示的帧数),用于测量显示帧数的度量。帧数为0说明页面处于静止,只要页面动起来,这个帧数就会有变化,然后再趋于静止,页面滚动起来帧数整体呈现“非对称”抛物线走势。接下来看一张图直观感受一下:


v2-25206795eab28beb976601f0193ddc79.jpg


通过上图我们能看出FPS值的大小对画面流畅度的影响,每一帧都是静止的图像,快速连续地显示帧便形成了运动的假象,因此高帧率可以得到更流畅、更逼真的动画。


二、何为帧延迟?卡顿如何造成的?

帧延迟的高低可以通过帧时间(Frame Time)来判定。我们参考显示器的60Hz刷新率进行计算,它意味着每秒刷新60帧每帧大约用时16.7毫秒。画面中每帧生成时间如果与16.7毫秒很接近,那么全程画面的帧数就很稳定,更接近理想的60帧每秒。
如果每帧生成时间高于16.7毫秒,也就意味着渲染这一场景所花费的时间比其他帧更多,造成画面跟不上,进而带来显示卡顿
举一个简单的例子,我们看到的早期动画片其实就是用一张张手绘图片连贯翻页制作而成的。当一张张独立图片切换速度足够快时,我们的眼睛就会以为这是连续的动作。反之,当图片切换速度不够快时,就会被人眼看出破绽,相应的视觉体验就是卡顿。


三、如何进行应用帧率测试?

既然帧率的高低影响着用户对应用视觉体验的好坏,那作为开发者该如何进行应用的帧率测试?


本文选取购物、实用工具、旅游住宿、社交通讯、影音娱乐等常见分类中的TOP应用采用以下方法进行FPS测试,测试结果显示,以下TOP应用的FPS都满足安卓绿色联盟帧率不小于55fps的性能标准。

测试环境:
硬件环境:Pixel 2 XL 4+64G
软件版本:Android 8.0
测试次数: 5次取平均值
APP帧率测试标准: 不小于55fps
测试前提条件:手机root,adb shell手机连接正常

非游戏类应用帧率测试方案:
测试范围:购物类应用手机淘宝、京东、唯品会、网易严选
实用工具类应用QQ浏览器、360浏览器、UC浏览器、百度
旅游住宿类应用途牛旅游、飞猪、携程旅行、去哪儿旅行
社交通讯类应用微博、MOMO陌陌、微信、QQ
影音娱乐类应用搜狐视频、爱奇艺、优酷、腾讯视频
Tips:
实用工具类应用针对“华为终端开放实验室(https://deveco.huawei.com/)”网站首页帧率信息进行统计;
购物、旅游住宿、社交通讯、影音娱乐类应用针对首页(跳过登录以及广告页面后的用户首个可滑动页面)进行帧率信息统计;


按照以下流程执行帧率信息收集和计算过程:
①页面滑动帧率收集:

v2-a4fb9731cc198e89bd14cad49f8021d1.jpg


②页面滑动帧率计算:

v2-a0b2ca58f092bb0c66d3f213fcec612c.jpg


③非游戏类应用测试数据展示:



四、如何进行应用帧率优化?

手机的CPU处理速率、屏幕尺寸、内存及显存的大小都影响着APP帧率的大小,这些因素在一定程度上约束着准备数据和数据传到屏幕的时间。再者,GUI软件架构在一定程度上也影响着应用帧率的大小。
在同等机器环境下,除去CPU、屏幕尺寸及系统GUI等固有数据传输耗时,要提升应用FPS就要减少视图渲染的时间。

通过以下几种方式可以有效提升应用FPS:

1、尽量不要在刷新时做耗时操作,例如准备数据,创建图片,图片变换等,数据和图片都应该在之前就加载到内存中,图片变换用canvas的变换来实现。
2、同一个界面中多个动画重叠出现时,尽量将动画的刷新过程统一刷新,避免频繁的invalidate,尤其是多个动画有时序上的关系时更应该统一。
3、尽量使用带有参数的invalidate来刷新,这样可以减少很多运算量。


欢迎有需求的朋友使用上述方法进行应用FPS测试,如果您有更好的解决方法与见解,欢迎留言交流!


目前,华为终端开放实验室已上线FPS测试功能,欢迎广大应用开发者前来使用!
首先登录 DevEco 平台进入 https://deveco.huawei.com/ ,登录账号,选择“测试服务-云测试-性能测试”,根据要求上传应用 APK,就可以获取帧率测试结果啦。



点赞
收藏
回复
1
分享
举报
浏览15578 编辑于2019-07-11 06:50未知归属地
全部评论
最多点赞
最新发布
最早发布
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。