当前位置:网站首页>干货 | 谁懂这篇文,玩游戏还会卡顿?
干货 | 谁懂这篇文,玩游戏还会卡顿?
2022-04-21 18:05:00 【华为云】

玩游戏的时候最怕的就是卡顿。排位赛的紧急关头,明明马上就能上一段位,却因为卡顿导致给对方送人头。还把对手送上了王者。引起队友骂声一片。作为测试工程师的你,可以忍?
卡顿测试也是专项测试里的一种,更多精彩测试内容,可下方关注公众号
Android系统每隔16ms会发出VSYNC信号重绘我们的界面(Activity)。App需要在16ms内完成下一次要刷新的界面的相关运算,以便界面刷新更新,如果无法在16ms内完成运算,就会发生卡顿,影响用户体验。
下面的这些内容可能会造成卡顿:
- 内存问题:内存抖动、full gc
- cpu:计算耗时
- gpu:布局复杂、overdraw
就是执行GC操作时,需要暂停线程的任何操作,GC操作完成,其他操作才能继续,频繁的GC会导致界面卡顿,频繁GC有两个原因: - 内存抖动(Memory Churn),创建大量的对象,在短时间内马上释放。
- 产生大量对象会占用Young Generation的内存区域, 如果剩余空间不足,就会触发GC。同时,大量对象的叠加也会增加Heap的压力,从而触发更多的GC操作。
UI渲染由CPU和GPU分工完成,CPU负责布局元素的运算(比如Measure, Layout)。GPU负责栅格化处理(将UI元素绘制到屏幕上)。
UI布局层次太深, 或者自定义控件的onDraw函数中存在复杂运算, 就需要CPU负荷工作,从而影响整个绘制过程。
过度绘制会导致gpu负荷,每屏的每一帧,像素点应该只被绘制一次,如果重复绘制像素点,就是过度绘制。
Android可以查看过度绘制:“设置”→“开发者选项”→“调试GPU过度绘制(toggle GPU overdraw)”,打开后再访问App会出现下图:

此时界面可能会有五种颜色标识:
- 原色:没有overdraw
- 蓝色:1次overdraw
- 绿色:2次overdraw
- 粉色:3次overdraw
- 红色:4次及4次以上的overdraw
卡顿的关键因素是无法在16ms内绘制一帧,sdk自带的systrace工具可以分析每一帧的绘制情况,并且给出补救措施和建议。
需要安装sdk,在sdk目录下存在systrace.py:
python{sdk目录}/platform-tools/systrace
注意:运行此工具需要python2.7。
如果运行中出现如下错误,安装对应的依赖即可:
No module win32conpip2 install pypiwin32No module sixpip2 install six
首先连接一个Android设备:192.168.181.102:5555
在命令行输入:
python systrace.py -e 192.168.181.102:5555
在设备上进行操作在命令行:按下enter,完成录制。此时会生成一份html报告,整个过程如下:

点击生成的html报告:

参数解析:

1.帧点:绿色表示16.6ms内,黄、红色超过16.6ms
2.任务状态灰:休眠;蓝色:可运行;绿色:运行;橙色:不响应信号
3.函数调用
在报告的页面有快捷键操作:
- w:放大
- s:缩小
- m:找到下一帧,显示时间
如果一个帧的绘制时间超过0.7s,用户会明显感觉到卡顿,称之为冰冻帧,比如上面红色的帧点。如果帧的绘制时间刚好超过0.6ms,称之为掉帧,比如上面黄色的帧点,但部分掉帧影响不大,主要危险来自于冰冻帧。
也可以用adb自带的工具对帧进行分析,但数据不如systrace精准:
adb -s devicesname shell dumpsys gfxinfo |less
原文链接
获取更多内容:https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=hwyun×tamp=1650524546
版权声明
本文为[华为云]所创,转载请带上原文链接,感谢
https://bbs.huaweicloud.com/blogs/349001
边栏推荐
猜你喜欢

Linux~libc.so.6(GLIBC_2.28)(64bit) 被 redis-5.0.3-1.nfs.x86_64 需要

【论文精读】Perception-based seam cutting for image stitching

Appreciation of single chip microcomputer DIY works, beginners come in to worship

有人声称「解决了」MNIST与CIFAR 10,实现了100%准确率

Finally someone made it clear! It turns out that this is the global one-piece network technology with low delay

What can MCU do? Do you have any interesting works made by MCU or open source hardware
![[intensive reading of Thesis] stable linear structures and seam measurements for parallelax image stitching](/img/93/c453cd25883a34d07b2a1b1e6d287c.png)
[intensive reading of Thesis] stable linear structures and seam measurements for parallelax image stitching

VS2019 visual studio 终端调试乱码问题

STM32 MCU memory manager code can be directly used in engineering

Part time jobs are higher than wages. In 2022, there are three sidelines with a monthly income of more than 10000
随机推荐
Interface test framework practice (I) | requests and interface request construction
LogStash~LogStash的output(输出)
搭建JMeter+Jenkins+Ant持续化
Onnx efficiency: comparison with module & dataparallel
人员不足、供应链断裂,危机之下制造业该如何自救?
集合之ArrayList
修改van-dropdown-menu默认高度
接口
Huawei cloud gaussdb (for influx) unveiling phase VI - hierarchical data storage
There is a prize for essay | a heavy prize of 5000 yuan. You are invited to contribute
Variable与Tensor合并后,关于训练、验证的相关变化
头条自媒体运营秘籍,坚持下去你就可以打败90%的人
爬虫案例01
Online examination of "financial law" in the computer examination of Northwest University of Technology
mysql8.0设置忽略大小写后无法启动
Linux~libc. so. 6 (glibc_2.28) (64bit) is redis-5.0.3-1 nfs. x86_ 64 required
Akismet插件教程WordPress阻止过滤垃圾邮件插件
谷歌投放手机端一直收集不到转化目标怎么回事?
Shallow comparison between oceanbase and tidb - implementation plan
Appreciation of single chip microcomputer DIY works, beginners come in to worship