APP性能测试(1):FPS测试

新手学堂036

APP性能测试(1):FPS测试,第1张

adb 计算帧率: https://zhuanlanzhihucom/p/67056913

adb 计算帧率: https://wwwhuaweicloudcom/articles/12566219html

帧率:FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。30FPS是一般录像的常用帧数,30FPS在快速动作的时候会感觉不流畅。60FPS是一般游戏的常用帧数。

绝大部分时间两者(Android和IOS)都能保持60FPS左右的满帧率。但都会有偶尔的掉帧。并且Android上要比IOS上严重很多。掉帧导致卡顿,用户必然会感觉到掉帧那一刻的不流畅。

FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅一般来说,Android设备的屏幕刷新率为 60帧/s ,要保持画面流畅不卡顿,要求每一帧的时间不超过 1000/60=166ms ,这就是16ms的黄金准则,如果中间的某些帧的渲染时间超过16ms,就会导致这段时间的画面发生了跳帧,因此原本流畅的画面变发生了卡顿。

FPS 通常作为衡量应用是否流畅的标准。

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

通过上图我们能看出 FPS 值的大小对画面流畅度的影响,每一帧都是静止的图像,快速连续地显示帧便形成了运动的假象,因此高帧率可以得到更流畅、更逼真的动画。

帧延迟的高低可以通过帧时间(Frame Time)来判定。我们参考显示器的 60Hz 刷新率进行计算,它意味着每秒刷新 60 帧,每帧大约用时 167 毫秒。画面中每帧生成时间如果与 167 毫秒很接近,那么全程画面的帧数就很稳定,更接近理想的 60 帧每秒。

如果每帧生成时间高于 167 毫秒,也就意味着渲染这一场景所花费的时间比其他帧更多,造成画面跟不上,进而带来显示卡顿。

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

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

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

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

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

APP也需要关注FPS、Jank及卡顿率。只是需要区分使用场景,如:

只需关注FPS,理论FPS应该为0,否则,说明有冗余刷新,容易引起手机发热及耗电。

只需关注FPS,FPS处于合适值即可,无需高频刷新。

需要关注FPS、Jank及卡顿率。手机交互灵敏度就是来源于此,Android系统才出黄油计划Jank。一般滑动状态下,帧率越高越好,Jank越小越好。

需要关注FPS、Jank及卡顿率,视频卡顿直接影响用户。视频一般帧率18-24帧,Jank=0。比如微信播放视频、视频播放器等。

注:

引用来源

在定位服务、GPS都正常开启的情况下,出现这样的现象,原因就是手机放置的地方接收不到卫星信号,没有完成定位。

  解决办法很简单,将手机放置在能直接看到一大半天空的地方,静止状态下先完成定位,再上路使用就好了。

  如果在室内想试机,可以将手机紧贴在窗户玻璃上,让手机能直接看到至少三分之一以上天空,时间长一些,也可以完成定位。