​​​无论是手机端还是PC端,画面的流畅度一直被用户视为衡量应用视觉体验的重要标准。用户往往通过主观感觉把视觉体验分为两种状态:

流畅视觉:行云流水,一气呵成;

非流畅视觉:“卡顿”、“抖动”、“迟钝感”;

而对开发者来说,FPS通常作为衡量应用是否流畅的标准。

一、FPS是什么?

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

可以想到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

影音娱乐类应用搜狐视频、爱奇艺、优酷、腾讯视频

注意:

实用工具类应用针对“华为终端开放实验室(https://deveco.huawei.com/)”网站首页帧率信息进行统计;

购物、旅游住宿、社交通讯、影音娱乐类应用针对首页(跳过登录以及广告页面后的用户首个可滑动页面)进行帧率信息统计;

按照以下流程执行帧率信息收集和计算过程:

①页面滑动帧率收集:

②页面滑动帧率计算:

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

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

手机的CPU处理速率、屏幕尺寸、内存及显存的大小都影响着APP帧率的大小,这些因素在一定程度上约束着准备数据和数据传到屏幕的时间。再者,GUI软件架构在一定程度上也影响着应用帧率的大小。

在同等机器环境下,除去CPU、屏幕尺寸及系统GUI等固有数据传输耗时,要提升应用FPS就要减少视图渲染的时间。

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

1、尽量不要在刷新时做耗时操作,例如准备数据,创建图片,图片变换等,数据和图片都应该在之前就加载到内存中,图片变换用canvas的变换来实现。

2、同一个界面中多个动画重叠出现时,尽量将动画的刷新过程统一刷新,避免频繁的invalidate,尤其是多个动画有时序上的关系时更应该统一。

3、尽量使用带有参数的invalidate来刷新,这样可以减少很多运算量。

欢迎有需求的小伙伴使用上述方法进行应用FPS测试,如果您有更好的解决方法与见解,欢迎在文章下方留言交流!后续我们将针对应用FPS情况进行重点分析,想了解应用FPS不同的原因么,想学习更多应用FPS优化的方法么?欢迎持续关注!

目前,华为终端开放实验室已上线FPS测试功能,欢迎广大应用开发者前来使用!

①登录 DevEco 平台

进入 https://deveco.huawei.com/ ,登录账号,选择“测试服务-云测试-性能测试”

②选择机型,点击“立即体验”

③根据要求上传应用 APK,获取帧率测试结果。

如有疑问,可发送邮件至deveco@huawei.com

*本报告最终解释权归华为所有。

DevEco 云测平台已开放能力概览

云测试:

兼容性测试——全自动化验证,保证应用无兼容性死角

稳定性测试——基于控件识别技术的随机遍历测试

性能测试——深入分析应用性能薄弱点

功耗测试——检测影响手机应用功耗的各项关键指标

安全测试——进行广告拦截、病毒扫描、安全漏洞分析和隐私泄露分析

云调试:

远程真机——华为全机型+谷歌原生真机,7*24小时在线

功能测试:

录制回放——解决应用功能逻辑测试诉求

*以上内容都已面向安卓绿色联盟会员免费开放,可登录deveco.huawei.com使用体验。

盘点20款主流应用FPS,最Skr帧率测试方法都在这里!的更多相关文章

  1. 盘点20款表现出众的HTML5游戏

    不管是对用户还是开发者来说,HTML5和JavaScript游戏这几年的发展真的是件好事.随着浏览器平台的日趋成熟,并开始整合这类型游戏所 要求的技术,我们每天都能在各大应用商店和社交网站中看到越来越 ...

  2. 12款最佳Linux命令行终端工具, 20款优秀的 Linux 终端仿真器

    12款最佳Linux命令行终端工具     如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的 ...

  3. 20款最好的免费的IDES和编辑器

    程序员编程利器:20款最好的免费的IDES和编辑器 Posted on 2015-02-17 21:52 尛鱼 阅读(170) 评论(1) 编辑 收藏 程序员编程利器:20款最好的免费的IDEs和编辑 ...

  4. 20 款免费的 JavaScript 游戏引擎

    使用 HTML5,CSS3 和 Javascript 可以帮助面向对象开发者开发拥有各种特性的游戏,比如:3D 动画效果,Canvas,数学,颜色,声音,WebGL 等等.最明显的优势在于使用 HTM ...

  5. 程序员编程利器:20款最好的免费的IDEs和编辑器

    程序员编程利器:20款最好的免费的IDEs和编辑器 还没转眼明年可就大年三十了,忙的可真是晕头转了个向,看着亲朋好友们那让人欣羡的小肚腩,不禁感慨,岁月是一把猪饲料,绿了芭蕉,肥了那杨柳小蛮腰,可怜我 ...

  6. 20款jQuery 的音频和视频插件

    分享 20 款jQuery的音频和视频插件 Blueimp Gallery: DEMO || DOWNLOAD Blueimp gallery 主要为移动设备而设计,同时也支持桌面浏览器.可定制视频和 ...

  7. 几款主流PHP框架的优缺点评比

    PHP是一种在国内外都比较流行的开源服务器端脚本开发语言.能够适应大中小型项目的开发需求.我们将在这篇文章中向大家介绍几款主流PHP框架及其相关优缺点评比,作为一个参考分享给朋友们. 主要参考的PHP ...

  8. 分享20款移动开发中很有用的 jQuery 插件

    今天,很显然每个网站都需要有一个移动优化的界面以提高移动用户的使用体验.在开发任何移动项目时,要尽可能保持每一种资源尺寸都尽可能的小,以给最终用户提供一个好的体验是非常重要的.在这篇文章中我们已经编制 ...

  9. 2014优秀的好用的20款免费jQuery插件推荐

    2013 年最好的 20 款免费 jQuery 插件,世界买家网 www.buyerinfo.biz在这里分享给大家 这些插件对设计者和开发者都有很大的帮助,希望大家能够喜欢:) 现 今互联网市场上提 ...

随机推荐

  1. xcode中一些便捷用法@literals简写

    总结一下,新的属性绑定规则如下: ●  除非开发者在实现文件中提供getter或setter,否则将自动生成 ● 除非开发者同时提供getter和setter,否则将自动生成实例变量 ●  只要写了s ...

  2. Delphi 通过SQLite3, SQLiteTable3 操作数据库

    var sql, sFile:string; db:TSQLiteDatabase;begin try sFile := G_AppPath + CH_IPC712Db; //if FileExist ...

  3. 【mybatis】mybatis中update更新原来的值加1

    示例代码: floor的值 = floor原来的值+要更新的差距值 <update id="updateFloor" parameterType="com.pise ...

  4. openstack 动态加载usb,需要修改kvm虚拟机的xml文件

    一.利用libvirt命令动态挂载 在利用KVM的虚拟桌面应用中,有时候需要在虚拟桌面起来后还能够动态的挂载或卸载数据盘,以达到类似热插盘U盘或移动硬盘的效果,当然管理上需要做处理.如果纯粹中技术上来 ...

  5. Java获取日期属于当年第几周

    String today = "2013-01-14"; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM- ...

  6. http://zhidao.baidu.com/link?url=inouJq69pK4PVM2L26fvnxXfRKhJ1uKmttgVqIEqld14SEUa8JzXZfRYHS3qdltqMXBgEQycFsF8AI9DlSoH4_

    http://zhidao.baidu.com/link?url=inouJq69pK4PVM2L26fvnxXfRKhJ1uKmttgVqIEqld14SEUa8JzXZfRYHS3qdltqMXB ...

  7. 【机器学习 & 数据挖掘 通俗介绍】

    如何向小白介绍何谓机器学习和数据挖掘?买回芒果他就懂了 JasonZheng • 2013-01-07 22:18   买芒果 嘴馋的你想吃芒果了,于是你走到水果摊,挑了几个让老板过过秤,然后你再根据 ...

  8. angular学习(二)—— Data Binding

    转载请写明来源地址:http://blog.csdn.net/lastsweetop/article/details/51182106 Data Binding 在angular中.model和vie ...

  9. php核心技术与最佳实践知识点(下)

    九.缓存 1.缓存三大要素:命中率, 缓存更新策略,缓存最大数据量 2.命中率(mysql为例):mysql提供了一系列的query cache的global status来提现数据库缓存的情况: s ...

  10. Git——版本管理工具(一)

    Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介绍 Git  —— The stupid content tracker(傻瓜式的内容跟踪器) 1. Git 背 ...