Android 检查 GPU 渲染速度以及是否过度绘制

Inspect GPU rendering speed and overdraw

Analyze with Profile GPU Rendering

Android 设备上的一些开发人员选项,可帮助你应用在运行其 UI 时可视化遇到的问题,例如执行了多余的渲染工作,或执行长线程和 GPU 操作。

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

一、分析 GPU 渲染速度

Profile GPU Rendering 工具以滚动直方图的形式显示相对于每帧 16 ms 的基准测试渲染 UI 窗口的帧所花费的时间。

在性能较差的 GPU 上,可用的填充率(GPU 可以填充帧缓冲区的速度)可能非常低。随着绘制帧所需的像素数量增加,GPU 可能需要更长的时间来处理新命令,并要求系统的其余部分等待直到它能够赶上来。分析工具可以帮助你识别 GPU 何时不堪重负。

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

1.1 启用分析器

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

  1. 在你的设备上,打开设置,然后点击开发者选项

  2. 监控(Monitoring)部分中,选择 GPU 呈现模式分析(Profile GPU Rendering)

  3. GPU 呈现模式分析(Profile GPU Rendering)对话框中,选择在屏幕上显示为条形图(On screen as bars),以覆盖设备屏幕上的图形。

  4. 打开要分析的应用程序。

1.2 检查输出

在图 1 中所示的 Profile GPU Rendering 图的放大图像中,你可以看到彩色部分,如 Android 6.0(API 级别 23)所示。

图 1. 放大的配置文件 GPU 渲染图。

以下是有关渲染图的一些注意事项:

  • 对于每个可见的应用程序,该工具都会显示一个图表。

  • 沿水平轴的每个直方条代表一帧,每个直方条的高度表示该帧渲染所用的时间(以毫秒为单位)。

  • 绿色水平线代表 16 毫秒。要达到每秒 60 帧,每帧的直方条需要保持在此线以下。任何时候一个直方条超过这条线,都有可能出现卡顿。

  • 该工具通过使直方条更宽且更不透明来突出显示超过 16 毫秒阈值的帧。

  • 每个直方条都有颜色组件,可以映射到渲染过程中的阶段。组件数量取决于设备的 API 级别。

下表提供了使用运行 Android 6.0 及更高版本的设备时,直方条的每个段的说明。

4.0(API 级别 14)和 5.0(API 级别 21)之间的 Android 版本具有蓝色,紫色,红色和橙色段。4.0 以下的 Android 版本只有蓝色,红色和橙色组件。下表显示了 Android 4.0 和 5.0 中的组件栏。

注意:虽然工具名为 Profile GPU Rendering,但所有受监视的进程实际上都在 CPU 中进行。通过向 GPU 提交命令来进行渲染,GPU 以异步的方式渲染屏幕。在某些情况下,GPU 可能需要做太多工作,而 CPU 必须等待它才能提交新命令。发生这种情况时,你会在橙色和红色条中看到尖峰,并且命令提交将被阻塞,直到 GPU 命令队列上有空闲。

二、GPU 过度绘制可视化

GPU 过度绘制可视化可帮助你通过对 UI 进行颜色编码来识别是否存在过度绘制。当你的应用在同一帧内多次绘制相同的像素时,会发生过度绘制。这可能是一个性能问题,因为额外的 GPU 工作会渲染用户无法看到的像素。所以,你应该尽可能地修复过度绘制事件。

要可视化你的设备上的过度绘制,请按以下步骤操作:

  1. 在你的设备上,打开“设置”,然后点击“开发者选项”

  2. 向下滚动到硬件加速渲染部分,然后选择调试 GPU 过度绘制(Debug GPU Overdraw)

  3. 调试 GPU 过度绘制(Debug GPU Overdraw)对话框中,选择显示过度绘制区域(Show overdraw areas)

Android UI 元素过度绘制色谱图如下:

图 2. 正常显示的应用程序(左侧),以及启用 GPU Overdraw(右侧)时显示的应用程序
图 3. 具有大量过度绘制(左)和少量过度绘制的应用程序示例(右)

请注意,这些颜色是半透明的,因此你在屏幕上看到的确切颜色取决于 UI 的内容。现在你可以识别出布局中出现过度绘制的位置,更多详情请看 Reduce overdraw

请记住,一些过度绘制是不可避免的。当你调整用户界面时,尽量让渲染图显示大多数真实颜色或仅 1 倍过度绘制(蓝色)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容