您好、欢迎来到现金彩票网!
当前位置:满堂彩 > 核观测 >

检查 GPU 渲染速度和绘制过度

发布时间:2019-07-12 21:31 来源:未知 编辑:admin

  Android 包含一些设备上开发者选项,可帮助您直观地了解您的应用在何处出现界面渲染问题,如执行太多不必要的渲染工作,或执行长时间的线程和 GPU 操作。 本页介绍如何调试 GPU 过度绘制问题以及如何分析 GPU 渲染问题。

  如需了解有关设备上开发者选项的更多信息,包括如何启用它们,请阅读配置设备上开发者选项。

  Profile GPU Rendering 工具以滚动直方图的形式直观地显示渲染界面窗口帧所花费的时间(以每帧 16 毫秒的速度作为对比基准)。

  在性能较低的 GPU 上,可用的填充率(GPU 填充帧缓冲区的速度)可能很低。 随着绘制帧所需的像素数增加,GPU 可能需要花较长时间来处理新命令,并要求系统的其余任务等待,直到系统可以跟上需求。 此分析工具可帮助您确定 GPU 何时因尝试绘制像素而负担过重,或何时因大量的过度绘制而被拖累。

  注:此分析工具不适用于使用 NDK 的应用。 这是因为当 OpenGL 提取全屏上下文时,系统会将框架消息推送到后台。 在此情况下,您可能会发现 GPU 制造商提供的分析工具会很有帮助。

  开始前,请确保您使用的是运行 Android 4.1(API 级别 16)或更高版本的设备,并启用开发者选项。 要在使用应用时开始分析设备 GPU 渲染,请执行以下操作:

  沿水平轴的每个竖条都代表一个帧,每个竖条的高度表示渲染该帧所花的时间(单位:毫秒)。

  水平绿线 毫秒。 要实现每秒 60 帧,代表每个帧的竖条需要保持在此线以下。 当竖条超出此线时,可能会使动画出现暂停。

  此工具通过加宽对应的竖条并降低透明度来突出显示超出 16 毫秒阈值的帧。

  每个竖条都有与渲染管道中某个阶段对应的彩色区段。 区段数因设备的 API 级别而异。

  下表介绍了使用运行 Android 6.0 及更高版本的设备时分析器输出中某个竖条的每个区段。

  表示 CPU 等待 GPU 完成其工作的时间。 如果此竖条升高,则表示应用在 GPU 上执行太多工作。

  表示 Android 的 2D 渲染器向 OpenGL 发起绘制和重新绘制显示列表的命令所花的时间。 此竖条的高度与它执行每个显示列表所花的时间的总和成正比显示列表越多,红色条就越高。

  表示将位图信息上传到 GPU 所花的时间。 大区段表示应用花费大量的时间加载大量图形。

  表示用于创建和更新视图显示列表的时间。 如果竖条的此部分很高,则表明这里可能有许多自定义视图绘制,或 onDraw 函数执行的工作很多。

  表示在视图层次结构中的onLayout和onMeasure回调上所花的时间。 大区段表示此视图层次结构正在花很长时间进行处理。

  表示评估运行该帧的所有动画程序所花的时间。 如果此区段很大,则表示您的应用可能在使用性能欠佳的自定义动画程序,或因更新属性而导致一些意料之外的工作。

  表示应用执行输入 Event 回调中的代码所花的时间。 如果此区段很大,则表示此应用花太多时间处理用户输入。 考虑将此处理任务分流到另一个线程。

  表示应用执行两个连续帧之间的操作所花的时间。 它可能表示界面线程中进行的处理太多,而这些处理任务本可以分流到其他线 及更高版本中的竖条区段。

  4.0(API 级别 14)和 5.0(API 级别 21)之间的 Android 版本具有蓝色、紫色、红色和橙色区段。 低于 4.0 的 Android 版本只有蓝色、红色和橙色区段。 下表显示的是 Android 4.0 和 5.0 中的竖条区段。

  表示 CPU 等待 GPU 完成其工作的时间。 如果此竖条升高,则表示应用在 GPU 上执行太多工作。

  表示 Android 的 2D 渲染器向 OpenGL 发起绘制和重新绘制显示列表的命令所花的时间。 此竖条的高度与它执行每个显示列表所花的时间的总和成正比显示列表越多,红色条就越高。

  表示将位图信息上传到 GPU 所花的时间。 大区段表示应用花费大量的时间加载大量图形。 此区段在运行 Android 4.0 或更低版本的设备上不可见。

  表示用于创建和更新视图显示列表的时间。 如果竖条的此部分很高,则表明这里可能有许多自定义视图绘制,或 onDraw 函数执行的工作很多。

  如需详细了解如何解释分析工具提供的信息,请阅读使用 Profile GPU Rendering 进行分析。

  注:尽管此工具名为 Profile GPU Rendering,但所有受监控的进程实际上发生在 CPU 中。 通过将命令提交到 GPU 触发渲染,GPU 异步渲染屏幕。 在某些情况下,GPU 会有太多工作要处理,在它可以提交新命令前,您的 CPU 必须等待。 在等待时,您将看到橙色条和红色条中出现峰值,且命令提交将被阻止,直到 GPU 命令队列腾出更多空间。

  这是开发者选项中的另一个功能,通过对您的界面进行彩色编码来帮助您识别过度绘制。 当您的应用在同一帧中多次绘制相同像素时,便会发生过度绘制。 因此,此图可显示您的应用可能在何处执行太多不必要的渲染工作,这可能是 GPU 多此一举地渲染用户不可见的像素所导致的性能问题。 因此,您应尽可能修复过度绘制 Event。

  请注意,这些颜色是半透明的,因此,您在屏幕上看到的确切颜色取决于您的界面内容。

http://team-yell.com/heguance/166.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有