首先,放出“腾讯PerfDog移动全平台性能测试”的软件APP面板截图和官网以及PerfDog社区使用说明书网址。
图1 腾讯PerfDog-移动全平台性能测试APP界面示意图(上图测试APP为 CSDN的效果图)
(腾讯PerfDog-移动全平台性能测试官网:https://perfdog.qq.com/;
PerfDog社区使用说明书网址:https://bbs.perfdog.qq.com/article-detail.html?id=5。)
这款软件的页面很简洁,说明书也很详细,关于如何使用,建议大家直接参考说明书即可,简单功能介绍这里就不再赘述,下面来介绍一下该款软件的画面流畅度方案。
1 PerfDog Jank计算方法
1.同时满足以下两条件,则认为是一次卡顿Jank.
a)当前帧耗时>前三帧平均耗时2倍;
b)当前帧耗时>两帧电影帧耗时(1000ms/24*2=84ms);
2.同时满足以下两条件,则认为是一次严重卡顿BigJank.
a)当前帧耗时>前三帧平均耗时2倍。
b)当前帧耗时>三帧电影帧耗时(1000ms/24*3=125ms)。
衡量指标还有其他比如:
- BigJank:1s内严重卡顿次数;
- Jank(/10分钟):平均每10分钟卡顿次数;
- BigJank(/10分钟):平均每10分钟严重卡顿次数。
(备注: 电影帧一般是18-24即1秒18-24张图片,约为41.67~55.55ms,这个数量级计算每帧的帧耗时RTC实时计时都可以很容易达到。)
2 为何这么计算卡顿的原理
动画是通过把人物的表情、动作、变化等分解后画成许多动作瞬间的画幅,再用摄影机连续拍摄成一系列画面,给视觉造成连续变化的图画。它的基本原理与电影、电视一样,都是视觉暂留原理。医学证明人类具有 “视觉暂留” 的特性,也叫作视觉暂停现象(Persistence of vision,Visual staying phenomenon,duration of vision)又称"余晖效应",(可点开百度超链接简单了解)人的眼睛看到一幅画或一个物体后,在一定短暂时间内(0.1-0.4秒)不会消失。利用这一原理,在一幅画还没有消失前播放下一幅画,就会给人造成一种流畅的视觉变化效果。
3 其他
(1)一次卡顿Jank的判定条件为啥是这?是否很科学?
首先,因不同背景和不同人体质等区别,我们要保证每帧图片的帧耗时要一定小于0.1秒那一定动画画面是流畅的,而两个电影帧是83.34~111.1ms,三个电影帧125.01 ~166.65ms,四个电影帧166.68 ~222.2ms。
所以,我们换个思路反推不满足条件的临界条件:比如,我们假设先满足第二个条件,即当前帧耗时>两帧电影帧耗时(1000ms/242=84ms),我们取85ms,那么1000/85≈11.7,当然如果一段动画或者视频只有最后1秒是此时的当前帧,并且同时满足上述两个条件,那我们基本上感受不够,我们假设最后两帧的帧耗时都是85ms,剩下来1000-852=830(当然,最后两帧的帧耗时异常人眼能不能感受到,博主不知道O(∩_∩)O哈哈~)。
然后,我们再满足第一个条件,即当前帧耗时>前三帧平均耗时2倍,那么反推前面N-2(假设1秒一共有N帧)平均帧耗时最大为830/(84/2)≈19.7,所以,我们可以推测,只要总帧数大于19.7+2=21,即只要FPS(正整数)在22及以上的APP我们就能找到满足一次卡顿Jank的两个条件,但本来不卡顿流畅的画面而被该规则误判定为一次卡顿Jank的情况。 例如一个30帧FPS运行的APP,其1秒内后4帧的帧耗时都为85ms,那么(1000-85*4)/26≈25ms,假设前26帧的帧耗时都为25ms,则同时满足一次卡顿Jank判定的两个条件但实际情况却是画面是流畅的,这就与基本的常识相矛盾,本判定一次卡顿Jank的条件在此场景下不合理的,同样的,对于一次严重卡顿BigJank.的判定条件也是如此。
此上只是博主个人观点,如有错误,还望指正,不胜感谢,谢谢。