百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

手机性能好不好 GPU玄学曲线告诉你

zhezhongyun 2025-08-07 00:02 44 浏览

前言

各位在看测试者对手机进行评测时或许会见过“安卓玄学曲线”,所谓中的安卓玄学曲线真名为“Profile GPU Rendering”。大多数情况下,在系统“开发者选项中被称为“GPU显示配置文件”或“GPU呈现模式分析”。

这曲线显示了GPU的某些运行模式,据说可以通过玄学曲线来判断手机的流畅性,或者直白点说能够通过它判断“卡不卡”。可实际这些曲线,真有判断卡不卡的作用吗?若确实如此我们又应该如何分析这些曲线?

Android 6.0之前

在Android 6.0之前,GPU的玄学曲线主要为黄色、红色、蓝色(Swap Buffers 、Command Issue、 Draw)三类。在玄学曲线中柱状图每一根代表一帧,其高度表示“渲染这一帧耗时”,这些“柱”的高短、颜色、长度都会随着手机屏幕界面的变化而改变。

安卓系统以每秒60帧为满帧,以每帧16毫秒时为满帧,即1秒÷60帧得计算结果。按照这个规定,速度快于16ms为流畅,因此GPU呈现模式分析下会有一条绿线来判断是否流畅,这条绿线就是16毫秒(ms)时的线,即低于绿线为流畅。

GPU在绘制视图的时候需要听从CPU的指示,这些指令会会在某处形成一个列表供GPU抽取并进行视图的渲染绘制。

① Command Issue(红色):表示执行任务的时间,是Android进行2D渲染显示列表的时间,为了将内容绘制到屏幕上,Android需要使用Open GL ES的API接口来绘制显示列表,红色线条越高表示需要绘制的视图更多;比如我们在遇到多张图加载的时候,红色会突然跳的很高,此事滑动页面也就流畅,要等几秒图片才能加载出来,并不是卡住。

②Swap Buffers(黄色):表示处理任务的时间,即CPU等待GPU完成任务的时间,线条越高,表示GPU做的事情越多。若橙色部分过高,说明GPU目前过于忙碌。

③ Draw(蓝色):表示测量和绘制视图列表所需要的时间,蓝色线条越高表示每一帧需要更新很多视图,或者View的onDraw方法中做了耗时操作。它越长说明当前视图比较复杂或者无效需要重绘,表现为卡顿。

理想的流畅状态是三色都低于绿线以下。

Android 6.0之后

自从安卓6.0之后,玄学曲线进行了改版,增加至8条数据。新版本GPU呈现分析曲线新增加了Sync&Upload、Measure&LayoutAnimation、Input Handling、Misc/Vsync Delay五大步骤数据。

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

下面这几种统称为绿色,随着后面标注的数字颜色逐渐加深。

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

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

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

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

实际上,玄学曲线时让开发者了解Android界面中渲染问题,从而进行调整和优化,为用户提供更好体验所设计。若强行将玄学曲线与手机流畅度挂钩是不合理的。

相关推荐

VSCode中值得推荐的常用的23个高效前端插件(工具篇)(一)

VSCode是我们前端开发的一个强大的IDE,所以选择趁手好用的插件是提高开发效率,然后剩下的时间用来摸鱼是很有必要滴。工具篇(23)Chinese(Simplified)vscode我们都知道是...

高级前端进阶,用gulp提升你的开发效率

前言:这两天动手配置了一下gulp,发现gulp配置简单,构建速度快,在某些使用场景下还是个不错的选择,本文从零开始构建,到最后打包发布到生成环境。通过本文可以快速上手gulp,文末附送github源...

Chrome 110 3大新特性!CSS支持画中画!

大家好,很高兴又见面了,我是"前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天带着大家一起看看最新发布的Chrome1...

用html中If语句——判断ie浏览器的版本

if语句的代码的语法非常简单,,就是一个if判断语句来判断浏览器的类型和版本,应用类似<!--[iflteIE6]>和<![endif]-->语法结构包孕起来...

谷歌浏览器怎么开启无痕浏览_谷歌浏览器怎么开启无痕浏览模式

很多用户在使用谷歌浏览器时,不希望留下任何上痕迹,开启无痕浏览器是最好的选择。这个模式下可以更好的保护个人隐私记录,给你带来更加安全的冲浪体验,接下来就给大家详细介绍下谷歌浏览器的无痕浏览模式,希望对...

Linux命令那么多,其实只需要记住这些就足够了!

你好,这里是网络技术联盟站,我是瑞哥。Linux命令行是一个强大且灵活的工具,可以极大地提高用户的工作效率和系统管理能力。我们都知道,Linux命令非常多,但是在实际的工作中,日常使用到的命令并不多,...

Linux如何查看文件_linux如何查看文件大小

Linux如何查看目录下的所有文件?用ls(list)查看当前目录下的所有文件和子目录。Ls查看目录下的文件,怎么区分是目录还是文件呢?第一种方式,我们可以通过颜色来区分目录和文件。默认情况下,目录显...

Linux系统man命令使用详解_linux man命令详解

man命令是在Linux和Unix系统上用于查看系统手册页(manualpages)的工具。手册页提供了关于系统命令、函数和文件的详细文档。命令语法:man[选项][命令或主题]参数:[选项]...

linux ps命令详解_linux中ps

linux中ps只显示进程的静态快照,及瞬间的进程状态,它拥有众多的风格,可分为3组:UNIX风格,BSD风格,GNU风格,本文介绍UNIX风格的ps指令。参数ps[-aefFly][-ppid...

如何在 Linux 上查找系统硬件信息?hwinfo命令很强大!

hwinfo是一个功能强大的硬件信息查询工具,专为Linux系统设计。它能够提供系统中几乎所有硬件组件的详细信息,包括但不限于CPU、内存、硬盘、网络设备、USB设备、显卡、声卡等。与其他常...

Linux Shell 入门教程(二):常用命令大全与使用技巧

在上一节《理解Linux与Shell》中,我们了解了Linux是什么、Shell是什么以及常见的Shell类型。这一篇,我们将正式动手操作,掌握使用频率最高、最实用的Linux命令...

SpringBoot应用部署神器:可视化服务管理脚本让运维更轻松

在SpringBoot应用的生产环境部署中,传统的手动启停服务方式不仅效率低下,还容易出错。今天分享一个功能强大的可视化服务管理脚本,让SpringBoot应用的部署和运维变得简单高效。痛点分析:传统...

一次虚拟机性能问题导致的应用故障

最近我负责维护的一套语音平台出了问题。故障现象据客户反馈是转入IVR以后没有正常响应,客户无奈挂机了。老实说,刚开始接到用户反馈的时候,我是不太相信的。我们的系统平时运行运行很稳定,客户的并发数不大,...

linux中的常用命令_linux常用命令及含义

linux中的常用命令linux中的命令统称shell命令shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互shell终端:我们平时输入命令,执行程序的那个...

linux学习笔记——常用命令-文件处理命令

ls目录处理命令:ls全名:list命令路径:/bin/ls执行权限:所有用户ls–ala--alll–long-i查看i节点ls–i查看i节点命令名称:mkdir命令英文原意:m...