点击上方“程序员大咖”,选择“置顶公众号”

关键时刻,第一时间送达!

对于任何产品来说,流畅度的重要性都不言而喻,流畅度的好坏,对一个产品的体验和口碑有着极大的影响。今天,小编就和大家一起学习下流畅度评测的相关内容~

什么是流畅度

我们都知道动画片其实是由一张张画出来的图片连贯执行产生的效果,当一张张独立的图片切换速度足够快的时候,会欺骗我们的眼睛,以为这是连续的动作。反之,当图片切换不够快时就会被人眼看穿,反馈给用户的就是卡顿现象。

Android绘制机制及卡顿原因

上图是在VSync机制下的绘制过程。VSync是Vertical Synchronization(垂直同步)的缩写,可以简单地把它认为是一种定时中断,Android规定,1秒钟有60个Vsync间隔,每个间隔时间为16.67ms,从图中看CPU 和GPU处理时间都很快,都少于一个VSync的间隔。

当CPU和GPU处理时间都很慢或者因为在主线程中干活太多,就会出现上图的现象。从上图可以看到CPU和GPU处理时间比较慢,都大于一个VSync的间隔,第二个VSync还在处理A区域的绘制。

现在的App每秒中最多能绘制60帧,1000ms/60帧=16.67ms/帧,也就是说对图像绘制的要求是平均每帧的绘制时间为16.67ms,超过了这个时间就可能造成不流畅的现象。

FPS测试流畅度的不足

FPS(Frames Per Secend)即一秒内绘制的帧数。FPS值越高画面越流畅。

举例:在测试输入法按键响应时,当我们按下按键到候选绘制完成的时间用了50ms,这个过程只用3帧就完成了,那么FPS就是3帧/秒,可见FPS值非常低,但是我们在测试过程中却没有发现卡顿的现象,这是为什么呢?

原因:输入法在1s内只有3帧的显示需求,50ms就画完了,那么FPS最高也只有3帧/秒。我们在使用输入法时,并没有每时每刻都在打字、滑动屏幕,很多时候输入法是处于静止的状态,这个时候输入法界面并不会进行图像绘制,那FPS就为1,但这个数并不能代表当前App在UI上界面不流畅。

结论:由此可见,FPS来衡量相对静止App的流畅度并不准确。

SM测试流畅度

VSync机制客户通过其Loop来了解当前App最高绘制能力,其机制如下:

1)固定每隔16.6ms执行一次;

2)如果没有绘制事件的时候也会运行这样一个Loop;

3)Loop在1s之内运行了多少次,即可以表示当前App绘制的最高能力,也就是App卡顿的程度。

if(存在帧的绘制):

Loop = 1 帧绘制完成所占用的Vsync间隔

else:

Loop = 1个Vsync间隔

所以SM计算方法为Loop在1s内运行了多少次(Loops per seconds)。Android机制中有一个Choreographer对象,当收到Vsync信号时,通过postCallback设置的回调函数调用使用者,在每一个Loop运行前通知我们,我们只需要数一下一秒内通知我们的次数就可以了。

使用腾讯提供的测试工具GT对流畅度进行测试,主界面如下图所示:

使用步骤为:

1)设计流畅度评测的动作;

2)打开“流畅度调试”;

3)点击“检测”,如果结果不“OK”,点击“更改”,然后再点击“重启”;如果结果为“OK”,选中被调试的进程后点击开始;

4)进入“参数”界面,点击“编辑”,拖动“SM”至“悬浮窗展示的参数”,可以实时看到SM的变化,然后点击“出参列表”右侧的红色按钮开始;

5)操作被测App,完成后点击“SM”可以看到评测的相关数据,包括:次数、平均值、最小值等;

6)点击“出参列表”右侧的红色按钮结束,结束后点击“保存”可以将评测的数据保存在相应的目录下。

流畅度优化

一开始发现App有卡顿的情况后,首先去查看我们的App是不是存在过度绘制的问题。过度绘制是指屏幕上的某个像素在同一帧的时间内被绘制了多次,在多层次的UI结构里面,如果不可见的UI也在做绘制的操作,这就会导致某些像素区域被绘制了多次。这就浪费大量的CPU以及GPU资源。过度绘制显示的四种颜色如下图所示。

  • 作者:Anna

  • 程序员大咖整理发布,转载请联系作者获得授权

【点击成为Python大神】

你应该知道的性能评测之一:流畅度测试相关推荐

  1. Android性能优化——界面流畅度优化

    Android性能优化--界面流畅度优化 序言 首先流畅度不仅仅是受到代码的影响.也会跟机器的硬件配置有关系.所以第一点需要明确的是,流畅度最低保证在哪个硬件配置之上.这样有了一个基点之后,才能比较好 ...

  2. 【Android性能】【流畅度】概念初识

    小菜鸡最近想在性能测试方面多了解一些,因此先了解了一下安卓性能中的流畅度相关概念,本文章纯理论概念,暂不涉及对应的代码机制,后面再慢慢补- 主要参考了以下两篇大佬文章,内容可能存在高度重复,仅作为学习 ...

  3. android 丢帧率测试,Android流畅度测试

    测试方法一:系统自带-开发者模式 实际上,为了方便开发者测试,安卓本身就内置了流畅度检测的功能.不过,这需要我们开启隐藏的开发者选项.如果你在用原生系统,那么开启开发者选项的方法很简单,进入到设置菜单 ...

  4. Android手机流畅度测试,选手机!教你测试手机流畅度

    流畅度一直是个比较玄的概念,关于iOS.WP以及安卓之间谁流畅,一直是个悬而未决的问题.而安卓的流畅度,又比iOS.WP要玄上一个层次.从安卓诞生开始,安卓的流畅度一直众说纷纭,每次有安卓新版发布,流 ...

  5. 系统流畅度测试软件,如何通过FPS显示快速测试自己手机流畅度

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

  6. 安卓 App 性能专项测试之流畅度深度解析-上篇

    指标背景 流畅度,顾名思义是用户感知使用App页面时的流畅情况,"App卡不卡",这是用户最直接的感受. 但是要用量化之后的数据衡量流畅度,在Android平台这边并没有直接有效的 ...

  7. win系统流畅度测试软件,视频对比:老电脑装Win7、Win10流畅性测试

    原标题:视频对比:老电脑装Win7.Win10流畅性测试 Windows 10号称比Win7快30%,那么对于旧电脑来说,这一说法还成立吗? 下面网易找来了两台完全相同的三年前售价四千左右的主流电脑, ...

  8. 小米平板2刷哪个系统更流畅_小米平板2 Windows版本评测:流畅度不如MIUI 7版 胜在更智能...

    未开启今天的正式评测之前,小编有一个问题想资讯大家:你们更新微软旗下最新Windows 10操作系统了么?如果更新了,你们对Windows 10系统又有哪些了解呢?是吐槽其系统兼容性差,还是使用方法不 ...

  9. win系统流畅度测试软件,详细教您win10和win7谁更流畅

    微软推出win10系统已经有几年了,随着win10的不断进步,很多朋友想开始使用win10系统了,但是不知道win10和win7系统到底那个更好,今天小编就从多个方面来跟你说说win10和win7哪个 ...

最新文章

  1. C# - linq查询现有的DataTable
  2. windows设置自动清理log
  3. 使用Java EE和OIDC构建Java REST API
  4. HDU 1492 The number of divisors(约数) about Humble Numbers
  5. linux网络流量监测工具,linux下网络流量监控工具
  6. promotion failed 和 Concurrent Mode Failure的区别
  7. 机器人弹古筝图片_古筝维修:40年的牡丹牌古筝,动了个外科手术
  8. 毕向东Mysql教程_传智播客_毕姥爷_2012年毕向东Java基础教程_毕向东老师
  9. 学计算机的学数学建模课吗,为什么数学建模与数学实验会进入大学课堂
  10. Android9.0 PM机制系列(一)PackageInstaller初始化解析
  11. 0xC0000005: 读取位置 0x00000000 时发生访问冲突
  12. 无线路由器DNS服务器解析,路由器DNS劫持简单实现和防范分析
  13. win10计算机管理看不见蓝牙,Win10设备管理器找不到蓝牙设备的解决方案
  14. 基于微信 xlog 开源 日志框架
  15. “如果不是生活所迫,谁又愿意拿青春赌明天呢”一位年新30w测试工程师的自白
  16. 音频文件 数据库存储_Apache Kafka是数据库吗?
  17. 机器学习-白板推导系列(一)-绪论(机器学习的MLE(最大似然估计)和MAP(最大后验估计))
  18. idea 配置web项目图片无法显示问题
  19. [女双战术解码]连续进攻杀吊结合攻防转换
  20. 学习笔记——PA的stability问题

热门文章

  1. 用CSS/CSS3 实现 水平居中和垂直居中的完整攻略
  2. 常用网站推广技巧和方法
  3. 在word中设置目录
  4. 域名升级访问中拿笔记好_有道云笔记被微信屏蔽,微信:部分链接内容有色情问题...
  5. oppo和海康嵌入式软件工程师面经总结
  6. Package org.eclipse.aether.installation
  7. 名悦集团:最适合下雪天开的汽车有哪些?
  8. 马斯克自动驾驶雄心“翻车”了!
  9. KVM 管理工具WebVirtMgr
  10. 记mysql的outfile、lode_file失败