帧率测试

1、GPU概念
GPU(Graphic Process Unit):图形处理器,又称显示核心,视觉处理器。是一种专门运算图像的微处理器。显卡的处理器称为图形处理器。它是显示的“心脏”。

2、为什么要进行帧率测试(FPS)
帧率测试:也叫流畅度测试,主要是测试图像,视频的性能。在无线测试领域中,尤其是游戏类的App,对图像处理速度更为关注。帧率过大,对于部分低配置的测试机来说,会产生大量的热量,导致测试机过烫;如果帧率过低,会导致很不流畅,体验比较差。
在移动设备中,FPS(Frame Per Second)达到每秒60帧以上,人眼主观感受到的差别就不大。FPS太高了反而会产生大量的热量导致移动设备发烫。所以以FPS为60为标准,即每一帧刷新的时间<=16ms,这样才能保证滑动的流畅度。
3、获取帧率数据
第一种方式:adb
1)进入手机的“设置”–>进入“开发人员选项”–>选上“GPU显示配置文件”
2) 重启被测App,对App进行操作
3) 运行命令: adb shell dumpsys gfxinfo apk_name>file_name.txt
4)打开file_name.txt,找到profile data in ms这部分数据
第二种方式:Fraps工具
具体详情:
4、数据整理与分析
后台记录下来了三个csv文件,csv文件可以Excel直接打开的。这三个文件对应的就是我们刚刚勾选的三个选项:
记录最大/小及平均率、记录帧率、累计帧时间。
记录最大/小及平均率的结果:
在这里插入图片描述
可以看到,我们一共记录了2496帧,历经92秒多,最小帧数25,最大帧数35,平均27.1。
累计帧率的结果:
在这里插入图片描述
这个结果显示的是刷新每一帧的时间。
记录帧率的结果:
在这里插入图片描述
这个结果最直观,显示的就是每秒的帧率。我们就用这个数值制作帧率曲线。
选中所有数据,然后在插入中选择折线图:
在这里插入图片描述
可以看到,帧数曲线就画出来了,横轴是时间,纵轴是帧率。
图中可以看到,虽然画面的帧数不高,但是曲线很平滑,对于普通笔记本来说,并不会感到卡顿,可以运行。我的本子是Intel集显。
当我们不是要测某一场景的帧数,而是需要一段固定的时间的话,在fraps中设置“在 ( 60)秒后自动停止记录”即可。
总结:这种方法做帧率曲线,简单快捷,一目了然。图表也可以更加完善。
在这里插入图片描述
打开frametimes.csv 这个文件,可以看到这样的一个页面。 我在这短短的92秒的时间内大概生成了1996帧,所以一共产生了2496行数据。
但是!我们仔细看就可以发现,B列(Time列) 事实上统计的是“帧累计生成时间”,而不是我们要求的“每帧生成时间”,所以我们必须要做一些处理。
在这里插入图片描述
我们再C列的这个位置上写入 =B3-B2 ,可以看到字体会变色,这时候再点一下确定,数值就算出来了。
在这里插入图片描述
双击下第一行,这时候,我们要求的“每帧生成时间”统计列就出来了!
在这里插入图片描述
使用折线图做出来的【每帧生成时间图】
一般来说,30帧/秒就相当于每帧生成时间为33ms,而30帧/秒可以作为一个判断画面是否流畅的临界点的。
在这里插入图片描述
而我们看这个图,显然播放视频压力还是蛮大的。

5、优化
①、提高渲染的方法(web页)
1)把js写在页面的底部
2)js使用高效的选择器
3) 将选择器保存为局部变量
4) 先操作再显示。(如滑屏时,等完滑屏结束后再显示手指所停留的那一页界面)
②、增加特殊逻辑
如:根据不同设备、不同网络进行不同的优化逻辑,即显示不同的帧率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章