lsekfe 发表于 2020-12-14 09:37:02

Android客户端性能测试之过度绘制

Overdraw(过度绘制)指的是屏幕上的某个像素在同一帧内被绘制了多次,在多层次的UI结构中,如果不可见的UI也在做绘制的操作,这就会导致某些像素区域被绘制了多次,这就浪费了大量的CPU和GPU资源。过度绘制测试主要针对Android客户端各界面。
  一、过度绘制的测试目的
  Android大多数手机的屏幕刷新率是60hz,系统要求每一帧都要在1000/60=16.67ms内绘制完成。如果没有在16ms内完成这一帧的绘制,假如你花了24ms完成,那么就会出现丢帧的情况。丢帧是用户体验中一个非常核心的问题,丢帧越多,用户感受到的卡顿情况就越严重,体验越差。找出过度绘制的问题,对系统进行优化,提升用户体验,就是过度绘制测试的目的。
  二、过度绘制测试方法
  Android手机的开发者选项中有【调试GPU过度绘制】的选项(Android4.2及以上的版本具备此功能)
  1、打开开发人员选项(以华为Mate 30 Pro手机为例),手机设置—关于手机—版本号,连续点击版本号5次


2、打开手机设置—系统—开发人员选项—调试GPU过度绘制


3、调试GPU过度绘制选项用颜色标识了过度绘制情况,从好到差依次为:蓝色-绿色-淡红-深红,颜色与过度绘制对应关系如下:
  原色:没有过度绘制
  蓝色:过度绘制1倍,像素绘制了2次。
  绿色:过度绘制了2倍,像素绘制3次。
  淡红:过度绘制了3倍,像素绘制了4次。
  深红:过度绘制了4倍,像素绘制了5次或者更多。
  对于各个色块,网络上有一张参考图更直观的展示了颜色与过度绘制的对应关系

三、过度绘制测试验收原则  1、控制过度绘制不超过2次,大片的蓝色还是可以接受的,中等大小的绿色区域是可以接受的,但是应该尝试优化、减少他们。
  2、3次过度绘制尽量避免,淡红色区域小范围可以接受,但要尽量避免。
  3、4次的过度绘制,深红色区域基本上是不被允许的,需要修复。
  下面几个图是大家经常用到的APP的商品详情页面和购物车页面,我们可以观察下过度绘制情况:图一与图四比较好,图二与图三都有优化的空间。





 当然在实际的测试过程中,页面为实现复杂的业务需求,势必要牺牲掉一些性能,测试人员发现问题,与项目成员沟通,大家对是否优化达成一致,在业务需求实现的前提下,提升用户体验,从而达到性能测试的价值。


页: [1]
查看完整版本: Android客户端性能测试之过度绘制