1、流畅度测试关注的几个参数:
(1)FPS(平均帧率):帧率–1秒内平均画面刷新次数;
FrameTime :两帧画面间隔耗时–也可简单认为单帧渲染耗时;=1/FPS
(2)Jank:Android端流畅度机制-黄油计划(Jank);
(3)Stutter(卡顿率):测试中卡顿时长的占比,即Stutter(卡顿率)=卡顿时长/总时长;
GPU渲染B帧时,用了两个显示器刷新时间,有一次没有刷新画面,用户会感受到卡顿。用户感受到的时屏幕刷新的间隔时间。
画面渲染流程如下:
2、FPS:不是FPS越高越流畅
(1)FPS=40,其中出现一次FrameTime>117ms,当真帧率是10时,预期的FrameTime=1000/40=25ms,所以非均匀渲染会感觉到卡;–Micro Stuttering(微型口吃)。
(2)FPS=30,FrameTime均匀为33ms,画面会非常平滑。
3、Jank
Google Jank 计算思路:考虑视觉惯性,以硬件vsync时间间隔,连续1次vsync没有新画面刷新,则认为是一次卡顿,也就是说下一次vsync时间点没有新画面刷新,则认为是一次Jank。
PerfDog的jank计算思路:
考虑视觉惯性,假设以前三帧的平均帧耗时为参考,作为vsync时间间隔,连续两次vsync没有新渲染画面刷新,则认为是一次潜在卡顿,也就是说下一帧耗时大于前三帧平均帧耗时2倍,则认为一次潜在卡顿。同时单帧耗时满足大于两倍电影帧耗时1000ms/24*2 (由于人眼低于24帧才能辨别画面不连续性),则认为是一次真正卡顿。同时若单帧耗时大于3倍电影帧耗时,则认为是一次严重卡顿。
PerfDog的jank计算方法:
同时满足两条件,则认为是一次卡顿Jank.
①Display FrameTime>前三帧平均耗时2倍。
②Display FrameTime>两帧电影帧耗时 (1000ms/24*2=84ms)。
同时满足两条件,则认为是一次严重卡顿BigJank.
①Display FrameTime >前三帧平均耗时2倍。
②Display FrameTime >三帧电影帧耗时(1000ms/24*3=125ms)。
用户感受到的流畅度和视觉惯性及电影帧有关系:
视觉惯性:用户潜意识认为下一帧率和当前帧率一样,如果当前是60帧率,下一帧是25,扰乱用户的视觉惯性,就会感受到卡顿;
电影帧:电影帧率(18-24),一般是24帧。电影帧单帧耗时:1000ms/24=40ms。电影帧率是一个临界点。低于这个帧率,人眼基本能感觉画面不连续性,也就是感觉到了卡顿。电影帧是42ms
4、Stutter(卡顿率)
测试过程中,卡顿时长的占比。即Stutter(卡顿率)=卡顿时长/总时长;Stutter(卡顿率) = ∑Jank time / Time
说明:Jank为卡顿次数,Stutter为卡顿率,Jank和Stutter趋势有一致性,但并非完全线性,因为每次Jank卡顿严重性是不一样的。同时也说明了,没有Jank卡顿出现,自然也就卡顿率是0了。
5、APP根据使用场景关注ANK及FPS:
(1) 静态页面窗口:只需关注FPS,理论FPS应该为0,否则,说明有冗余刷新,容易引起手机发热及耗电。
(2)有滚动动画页面窗口:只需关注FPS,FPS处于合适值即可,无需高频刷新。
(3)快速滑动页面窗口:需要关注FPS和Jank。手机交互灵敏度就是来源于此,Android系统才出黄油计划Jank。一般滑动状态下,帧率越高越好,Jank越小越好。
(4)播放视频页面窗口:需要关注FPS和Jank,视频卡顿直接影响用户。视频一般帧率18-24帧,Jank=0。比如微信播放视频、视频播放器等。
参考:PerfDog Community
今天的文章【学习笔记】APP性能—流畅度测试关注的几个参数分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/62327.html