1.介绍 

  Android手机内置工具Profile GPU Rendering(中文名称:GPU显示配置文件、GPU呈现模式分析等),用来分析是什么让你的应用出现卡顿、变慢。

 2.使用方式

  开发者选项--GPU 显示配置文件--以条的形式显示于屏幕,然后你就会看到1条条不同颜色的柱状图,滑动下屏幕,你会发现,柱状图开始向右延伸,切换界面,柱状图就重新开始显示,这其实就是一帧帧在显示。

 3.Profile GPU Rendering原理

  你会看到柱状图有三个区域,上、中、下,上代表了通知栏的渲染性能,中代表了应用的渲染性能,下代表了导航栏的渲染性能。

  wKiom1fYuo2A37ynAADG5pqwXm4243.png-wh_50


 wKiom1fYus3DXJdFAADY2qMsOTw655.png-wh_50

 

 wKioL1fYuujDDLfDAADKalU9V98698.png-wh_50


   每一条线代表了一帧的渲染情况,线越高,代表渲染时间越长。绿色的线代表了16ms,为了达到60帧每秒,就要求每条线都在绿色线下面。当你发现有超过绿线的线条时,就代表这会出现卡顿(当然,卡顿还要根据实际用户对卡顿的反应和感受)。

  wKiom1fYvLvSEDj8AAD3Y6VNIOc585.png-wh_50

  

  你会发现中间的部分有三种颜色,蓝、红、黄,代表着渲染通道的比例,以及一帧需要的时间。

   wKiom1fYvpXihCpSAAE_UuGFyS0156.png-wh_50


   蓝色(update display list),代表着绘制时间,或者说是更新生成display list的时间,渲染前,需要将合适的格式传给GPU,和缓存display list,这两步就是蓝色线条需要完成的事情。当你发现蓝色线条升高了,可能就是包含了无效的视图,或者是视图里面的onDraw(绘图方法)包含了复杂的逻辑。

  wKioL1fYwvGQfbMEAADcwJ2lBNY126.png-wh_50


  wKiom1fYwwDgUVkPAADASOKtu74688.png-wh_50

  wKioL1fYxIDDjtXyAACvSt6FuXc283.png-wh_50


  红色(Execute Display List)代表了执行时间,也就是Android 2D 渲染执行Display List的时间,为了绘制屏幕,android需要与openGL ES API互动,来绘制显示列表信息,然后将数据传给GPU,最后在屏幕上显示视图。越是复杂的视图,就需要复杂的OpenGL命令去绘制。当红色出现高峰或者是密集型高峰时,可能就是复杂的个性化视图或者大量需要重新绘制的视图的影响。

  wKiom1fYx6Th2DSMAAFC8G713hA236.png-wh_50

  wKioL1fYx7KSo4bWAAD0bWNBDCk579.png-wh_50

  

 wKiom1fYx9vDNdSEAABooytvpAo658.png-wh_50

  wKioL1fYx-rRXSSPAAC8veK_EPw331.png-wh_50


  最后是橘色(process)代表了处理时间,或者说是CPU告诉GPU渲染一帧完成了,需要等待GPU回复。如果这一条很高,就代表这GPU正在处理大量复杂的视图,这就需要Opengl命令来处理。

  wKiom1fYznGgpTOUAADhCnqTcuE373.png-wh_50


 最后做下总结:

  想要得到流畅的使用,就需要保持这些条目低于16ms。