参考Google的Android Performance Patterns(安卓性能典范)

Android Performance Patterns(Android性能典范)

Profile GPU Rendering tool(GPU呈现模式分析),属于GPU Profile工具中的一种。Profile GPU Rendering tool的目的是为了帮助开发者更好的找出应用程序中渲染相关的问题,找到应用程序中的性能瓶颈,进而对代码进行优化,提升用户体验。

在国产手机厂商的各大ROM还未像今日这样完善与功能丰富之前,给自己的手机换上一个第三方的ROM,几乎是大家乐此不疲的做法。而换上的第三方ROM(或者自己的官方ROM)是否流畅。大家几乎都会查看自己手机的GPU呈现模式分析图(不同厂商的叫法可能不同,有的被翻译为GPU显示配置文件)。

究其原因,是因为GPU呈现模式分析是用来体现一个说不清的东西——流畅度。GPU呈现模式分析的作用就是给一台手机到底是流畅还是卡顿,做了比较直观且定性的定义——绿线之下为流畅,绿线之上则是不满60帧即相对卡顿。

目前,安卓以满帧60fps计算。在一秒内绘制60帧,即为理想渲染速度。可以算出每帧的渲染时间在0.016667S(16ms)左右。

开启开发者选项后,我们就可以在开发者选项中开启GPU呈现模式分析。

在开启之后,我们就可以在屏幕的下方看到出现的连续柱状图。每一根都是由红、黄、蓝三色组成一条竖线,每个竖线代表了在一秒内,GPU的渲染情况。除此之外,还有一根绿色的横线。这就是前文中提到的代表60fps的标准线。红黄蓝竖线形成的竖线低于这条绿色的横线,则代表手机运行流畅。但高于这条绿线,却不一定表示着手机卡顿。具体原因会在下文中分析到。

首先来说这三个颜色的线都代表着什么:

蓝色:代表测量绘制的时间,或者说它代表需要多长时间去创建和更新你视图。因此,相对其他两条线,蓝色的参考意义相对还是比较大的。当蓝色的柱状图越低时,代表更新视图的时间越短,手机在直观上也就显得更加的流畅,也可以说是更加的“跟手”。当蓝色线条高时,就代表了当前的视图可能过于复杂,或者失效了需要重新绘制。

    红色:代表了执行时间,这部分时间是Android进行2D渲染视图的时间。当红色条很高的时候,则代表当前显示画面的视图可能过于复杂。但是在实际使用中,比如在刷淘宝时,红色条会突然跳的很高。这是因为这类购物APP往往会有很多的缩略图需要加载。但是此时页面的划动依旧是流畅的,缩略图可能会受制于网络的情况等了零点几秒才加载出来,这导致了红色条会偏高。但并不意味着你的手机“卡”住了。这也是前文所说的高于绿线并不一定代表着你的手机卡顿了。只不过是因为手机的网络情况受限,图片加载慢导致了柱状图高于绿线的情况发生,但是此时手机依旧是“跟手”的。并不会有丢帧的情况产生。
橙色:橙色部分代表的手机的处理时间。或者说是CPU告诉GPU渲染一帧的地方,这是一个阻塞调用。CPU会一直等待GPU收到指令的回复。如果陈色的柱很高,则代表着给了GPU太多的工作了。

当我们理解了各条线所代表的意义之后,再看"玄学曲线"就不难理解了。蓝色柱状条的参考意义在一般情况下相对比较大,当蓝色条过高的时候,手机会丢帧。而在打开淘宝等需要加载很多缩略图的APP的时候,红色条会变高,但此时若是蓝色条不高,手机则依旧是"跟手"的,直观上并不会有卡顿产生。

总结一下:

Profile GPU Rendering tool被隐藏开发者选项中并不是没有原因的,这只是是开发者用来查看程序渲染性能的工具。被用来测试手机流畅度并不是很合适,当柱状图高于绿线的时候并不代表着手机一定卡顿!

补充:

    在Android 6.0(Android Marshmallow)之后,GPU的渲染过程相对之前的三步被拆分成了八部。

    (1)Swap Buffers:表示处理任务的时间,也可以说是CPU等待GPU完成任务的时间,线条越高,表示GPU做的事情越多;

    (2)Command Issue:表示执行任务的时间,这部分主要是Android进行2D渲染显示列表的时间,为了将内容绘制到屏幕上,Android需要使用Open GL ES的API接口来绘制显示列表,红色线条越高表示需要绘制的视图更多;

    (3)Sync & Upload:表示的是准备当前界面上有待绘制的图片所耗费的时间,为了减少该段区域的执行时间,我们可以减少屏幕上的图片数量或者是缩小图片的大小;

    (4)Draw:表示测量和绘制视图列表所需要的时间,蓝色线条越高表示每一帧需要更新很多视图,或者View的onDraw方法中做了耗时操作;

    (5)Measure/Layout:表示布局的onMeasure与onLayout所花费的时间,一旦时间过长,就需要仔细检查自己的布局是不是存在严重的性能问题;

    (6)Animation:表示计算执行动画所需要花费的时间,包含的动画有ObjectAnimator,ViewPropertyAnimator,Transition等等。一旦这里的执行时间过长,就需要检查是不是使用了非官方的动画工具或者是检查动画执行的过程中是不是触发了读写操作等等;

    (7)Input Handling:表示系统处理输入事件所耗费的时间,粗略等于对事件处理方法所执行的时间。一旦执行时间过长,意味着在处理用户的输入事件的地方执行了复杂的操作;

  (8)Misc Time/Vsync Delay:表示在主线程执行了太多的任务,导致UI渲染跟不上vSync的信号而出现掉帧的情况;

玄学曲线——GPU呈现模式分析相关推荐

  1. Android开发者选项——GPU呈现模式分析

    1玄学曲线各部分到底代表了什么 对于Android用户来说,无论你用的什么品牌的手机,在开发者选项中都能发现"玄学曲线"的开关,之所以称其为玄学曲线,还是因为它被很多网友用于测试一 ...

  2. Android GPU呈现模式分析功能,手机流畅度。仅供参考

    手机的流畅度直接影响使用体验,很多小伙们非常在意这一点,而手机流畅与否除了取决于系统本身的优化和元件的老化程度,与一些外部因素诸如温度和网络信号都有密切关系.今天跟大家介绍一个手机系统里面自带的小工具 ...

  3. Android10的GPU呈现模式分析在哪?

    标题 Android10.0的GPU呈现模式分析只是改名了,叫"HWUI呈现模式分析"

  4. GPU呈现模式分析中颜色的意义

    google官方解释中文版:链接 google官方解释英文详细解释:链接 下表介绍了使用运行 Android 6.0 及更高版本的设备时分析器输出中某个竖条的每个区段. 竖条区段 渲染阶段 说明 交换 ...

  5. 玄学曲线并不玄 教你如何看懂GPU呈现

    玄学曲线各部分到底代表了什么 对于Android用户来说,无论你用的什么品牌的手机,在开发者选项中都能发现"玄学曲线"的开关,之所以称其为玄学曲线,还是因为它被很多网友用于测试一个 ...

  6. Android 常用的性能分析工具详解:GPU呈现模式, TraceView, Systrace, HirearchyViewer(转)...

    此篇将重点介绍几种常用的Android性能分析工具: 一.Logcat 日志 选取Tag=ActivityManager,可以粗略地知道界面Displaying的时间消耗.当我们打开一个Activit ...

  7. Android检查GPU呈现模式和过度绘制

    Android提供了一些工具可以用来帮助分析你的UI是否存在图形绘制问题,例如执行过多不需要的绘制工作,或执行长时间的GPU操作. 分析GPU呈现模式 GPU呈现模式工具以滚动直方图的形式展现,显示渲 ...

  8. 如何使用“GPU 呈现模式”进行卡顿问题定位

    如何使用"GPU 呈现模式"进行卡顿问题定位 工具介绍 Android 包含一些设备上的开发者选项,可帮助您直观地查看您的应用可能会在何处遇到界面渲染问题,如执行不必要的渲染工作, ...

  9. 开发者模式之GPU渲染模式分析

    手机自带的开发者选项中,有很多可以使用的工具,他们可以用来分析自己的应用的性能.绘制.anr等情况.下面主要说下PU渲染模式分析的简单讲解: GPU渲染模式分析 打开 在屏幕上显示为条形条图 模式 该 ...

最新文章

  1. 输入一个字符串,将其逆序后输出
  2. Redis02_数据模型初识
  3. 01Prism WPF 入门实战 - 项目准备
  4. 大数据学习(2-1)-Hadoop安装教程-单机模式和伪分布模式(Ubuntu14.04LTS)
  5. 多线程的创建方式之实现Callable接口
  6. 数据处理——数据编码
  7. ASP.NET中 CheckBox(复选框)的使用
  8. 安天工程师解读CryptKeeper通用密码事件
  9. English-旅游英语及情景对话
  10. 交互式电子白板有哪些功能
  11. gitbook:node_modules\npm\node_modules\graceful-fs\polyfills.js:287
  12. 手机/笔记本电脑看电视直播
  13. bioRxiv | AI辅助设计针对SARS-CoV-2的表位疫苗
  14. c程序设计总结(红皮书+真题)
  15. 企业为什么要做等保?不做等保有什么后果?
  16. shell kill 掉指定app
  17. flashback六大技术之flashback version query
  18. 【淘宝API开发系列】获得商品评论 API 返回值说明
  19. 如何做电视节目的视频直播(电视台节目直播)
  20. hasChildNodes()方法,nodeName、nodeValue、nodeType介绍

热门文章

  1. 企业为什么要做软文营销
  2. 【电力电子技术】电力电子器件:概述
  3. 从国外的网站上下载包很慢的解决办法
  4. 视频教程-规范毕业论文及精美简历排版实战-Office/WPS
  5. Android nfc模块读写MifareClassic卡50
  6. 双减之后,体育培训升温,如何为孩子选择合适的体育项目?
  7. 量化分析之(四)股票暴涨行情不错过之买持股基金
  8. 大学计算机实验六文件管理与磁盘恢复,虚拟实验:文件管理与磁盘恢复.pdf
  9. php聊天动图,聊天室技术 -- 贴图的实现_PHP教程
  10. ninja文件语法学习