google官方解释中文版:https://developer.android.com/studio/profile/inspect-gpu-rendering?hl=z…
google官方解释英文详细解释:https://developer.android.com/topic/performance/rendering/profile-gpu
下表介绍了使用运行 Android 6.0 及更高版本的设备时分析器输出中某个竖条的每个区段。
<table border="1" style="border-color: #666; color: #777;">
<tbody>
<tr>
<th> 竖条区段 </th>
<th width="90"> 渲染阶段</th>
<th>说明</th>
</tr>
<tr>
<td width="70" align="center"><img alt="" height="27" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044949-79…; width="45" /></td>
<td>交换缓冲区</td>
<td>表示 CPU 等待 GPU 完成其工作的时间。 如果此竖条升高,则表示应用在 GPU 上执行太多工作。</td>
</tr>
<tr>
<td align="center"><img alt="" height="37" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044949-79…; width="40" /></td>
<td>命令问题</td>
<td>表示 Android 的 2D 渲染器向 OpenGL 发起绘制和重新绘制显示列表的命令所花的时间。 此竖条的高度与它执行每个显示列表所花的时间的总和成正比—显示列表越多,红色条就越高。</td>
</tr>
<tr>
<td align="center"><img alt="" height="31" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044949-79…; width="42" /></td>
<td>同步和上传</td>
<td>表示将位图信息上传到 GPU 所花的时间。 大区段表示应用花费大量的时间加载大量图形。</td>
</tr>
<tr>
<td align="center"><img alt="" height="42" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044949-79…; width="43" /></td>
<td>绘制</td>
<td>表示用于创建和更新视图显示列表的时间。 如果竖条的此部分很高,则表明这里可能有许多自定义视图绘制,或 onDraw 函数执行的工作很多。</td>
</tr>
<tr>
<td align="center"><img alt="" height="47" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044949-79…; width="43" /></td>
<td>测量/布局</td>
<td>表示在视图层次结构中的 <a data-token="870213b10bfc2a5662481a8194f8b609" href="https://developer.android.com/reference/android/view/View.html#onLayout…; rel="nofollow">onLayout</a> 和 <a data-token="5ae958f6903e17c27a1aac98fe4a18ae" href="https://developer.android.com/reference/android/view/View.html#onMeasur…; rel="nofollow">onMeasure</a> 回调上所花的时间。 大区段表示此视图层次结构正在花很长时间进行处理。</td>
</tr>
<tr>
<td align="center"><img alt="" height="46" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044949-79…; width="41" /></td>
<td>动画</td>
<td>表示评估运行该帧的所有动画程序所花的时间。 如果此区段很大,则表示您的应用可能在使用性能欠佳的自定义动画程序,或因更新属性而导致一些意料之外的工作。</td>
</tr>
<tr>
<td align="center"><img alt="" height="47" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044949-79…; width="44" /></td>
<td>输入处理</td>
<td>表示应用执行输入 Event 回调中的代码所花的时间。 如果此区段很大,则表示此应用花太多时间处理用户输入。 考虑将此处理任务分流到另一个线程。</td>
</tr>
<tr>
<td align="center"><img alt="" height="64" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044949-79…; width="44" /></td>
<td>其他时间/<br>VSync 延迟</td>
<td>表示应用执行两个连续帧之间的操作所花的时间。 它可能表示界面线程中进行的处理太多,而这些处理任务本可以分流到其他线程。</td>
</tr>
</tbody>
</table>
表 1. Android 6.0 及更高版本中的竖条区段。
4.0(API 级别 14)和 5.0(API 级别 21)之间的 Android 版本具有蓝色、紫色、红色和橙色区段。 低于 4.0 的 Android 版本只有蓝色、红色和橙色区段。 下表显示的是 Android 4.0 和 5.0 中的竖条区段。
<table border="1" style="border-color:#666; color: #777;">
<tbody>
<tr>
<th width="70" align="center"> 竖条区段</th>
<th width="70">渲染阶段</th>
<th>说明</th>
</tr>
<tr>
<td align="center"><img alt="" height="28" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044949-79…; width="46" /></td>
<td>进程</td>
<td>表示 CPU 等待 GPU 完成其工作的时间。 如果此竖条升高,则表示应用在 GPU 上执行太多工作。</td>
</tr>
<tr>
<td align="center"><img alt="" height="46" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044949-79…; width="44" /></td>
<td>执行</td>
<td>表示 Android 的 2D 渲染器向 OpenGL 发起绘制和重新绘制显示列表的命令所花的时间。 此竖条的高度与它执行每个显示列表所花的时间的总和成正比—显示列表越多,红色条就越高。</td>
</tr>
<tr>
<td align="center"><img alt="" height="44" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044949-79…; width="44" /></td>
<td>XFer</td>
<td>表示将位图信息上传到 GPU 所花的时间。 大区段表示应用花费大量的时间加载大量图形。 此区段在运行 Android 4.0 或更低版本的设备上不可见。</td>
</tr>
<tr>
<td align="center"><img alt="" height="46" src="http://imgtec.eetrend.com/files/2019-08/%E5%8D%9A%E5%AE%A2/100044949-79…; width="47" /></td>
<td>更新</td>
<td>表示用于创建和更新视图显示列表的时间。 如果竖条的此部分很高,则表明这里可能有许多自定义视图绘制,或 onDraw 函数执行的工作很多。</td>
</tr>
</tbody>
</table>
表 2. Android 4.0 及 5.0 中的竖条区段。
如需详细了解如何解释分析工具提供的信息,请阅读使用 Profile GPU Rendering 进行分析(链接:https://developer.android.com/topic/performance/rendering/profile-gpu.h…)。
注: 尽管此工具名为 Profile GPU Rendering,但所有受监控的进程实际上发生在 CPU 中。 通过将命令提交到 GPU 触发渲染,GPU 异步渲染屏幕。 在某些情况下,GPU 会有太多工作要处理,在它可以提交新命令前,您的 CPU 必须等待。 在等待时,您将看到橙色条和红色条中出现峰值,且命令提交将被阻止,直到 GPU 命令队列腾出更多空间。
本文转自:CSDN - <a href="https://blog.csdn.net/xingchenxuanfeng/article/details/81164142">星辰旋风</…;,转载此文目的在于传递更多信息,版权归原作者所有。