玩游戏的时候最怕的就是卡顿。排位赛的紧急关头,明明马上就能上一段位,却因为卡顿导致给对方送人头。还把对手送上了王者。引起队友骂声一片。作为测试工程师的你,可以忍?

卡顿测试也是专项测试里的一种,更多精彩测试内容,可下方关注公众号

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 win32con
pip2 install pypiwin32
No module six
pip2 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

谁懂这篇文,玩游戏还会卡顿?相关推荐

  1. 干货 | 读懂这篇文,玩游戏还会卡顿?

    玩游戏的时候最怕的就是卡顿.排位赛的紧急关头,明明马上就能上一段位,却因为卡顿导致给对方送人头.还把对手送上了王者.引起队友骂声一片.作为测试工程师的你,可以忍? 卡顿测试也是专项测试里的一种,更多精 ...

  2. | 谁懂这篇文,玩游戏还会卡顿?

    获取更多技术文章分享 玩游戏的时候最怕的就是卡顿.排位赛的紧急关头,明明马上就能上一段位,却因为卡顿导致给对方送人头.还把对手送上了王者.引起队友骂声一片.作为测试工程师的你,可以忍? 卡顿测试也是专 ...

  3. 笔记本玩游戏画面间歇卡顿的终极解决方案 ThrottleStop使用教程

    笔记本玩游戏画面间歇卡顿的终极解决方案 附ThrottleStop使用教程 为了解决笔记本玩游戏卡顿的问题,我们首先要知道笔记本电脑玩游戏为什么会卡顿.一般来说,既然能带得动游戏就可以正常运行.正常情 ...

  4. 安卓手机玩游戏卡顿怎么解决_手机玩游戏的时候卡顿,怎么处理?

    手机内存不足或者是后台开了太多的应用程序,请关闭不需要的应用程序,并且定时清理手机缓存垃圾,释放内存. 一.iPhone6玩游戏卡顿怎么办? 1.关闭Assistive Touch 对于很多果粉来说, ...

  5. 计算机游戏设计软件有哪些,除了玩游戏还能做设计?十代酷睿设计软件实操

    众所周知,英特尔酷睿H系列处理器是主要面向游戏本推出的平台.但是近年来随着英特尔与业界合作伙伴共同努力,并细分出创意设计PC之后,兼顾多核心和高主频特性,并拥有先进指令集的酷睿H系列处理器也成为这类新 ...

  6. 计算机玩游戏特别卡怎么办,电脑玩游戏突然变卡怎么办 玩游戏变卡的解决方法...

    有很多玩家经常发现,以前玩起来非常流畅的游戏,后来就变卡了,FPS上下浮动特别大,下面小编就为大家带来一些解决方法. 类别:卸载清除   大小:776K    语言:简体中文 评分:6 电脑温度太高, ...

  7. 计算机win7卡顿如何解决方法,win7电脑玩2D游戏经常发生卡顿六大解决方法

    最近有很多游戏玩家和小编说win7电脑玩2D游戏经常发生卡顿,游戏卡顿问题确实让玩家苦恼,因为导致2D游戏经常发生卡顿的原因有很多种,那么win7电脑玩2D游戏经常发生卡顿怎么办?不要着急,针对此问题 ...

  8. win10笔记本玩游戏总是很卡怎么办

    win10是微软最新的系统,自从微软停止支持win7系统后,大家纷纷给电脑安装上win10系统.不过,在使用过程中很多玩游戏的朋友反馈win10笔记本玩游戏总一卡一卡,严重影响游戏体验,造成此故障的原 ...

  9. 玩java游戏买什么手机好用又便宜_学生党想换手机又没钱?这几款价格便宜玩游戏又不卡...

    原标题:学生党想换手机又没钱?这几款价格便宜玩游戏又不卡 现在更新换代速度快,隔三差五就发新机,有新的技术出来了,一般发布的新机价格都不便宜,学生党没钱买那么贵的旗舰机,小编今天就推荐几款适合学生用的 ...

最新文章

  1. win10上编译libharu库
  2. halcon模板匹配干扰边缘消除办法(最硬核方式)
  3. 织梦cms仿知名吧站长导航网站模板
  4. macos big sur u盘安装_老款macbook机型欺骗补丁强制安装macOS11 Big Sur图文详解
  5. JAVA抽象类和接口的深入探讨
  6. 开发问题及解决 java.lang.ClassCastException:android.widget.LinearLayout$LayoutParams
  7. Git图形化操作:Revert(恢复)本地的修改到上一个版本
  8. 安卓手机免root修改hosts文件
  9. ebm风扇选型手册_德国EBM全系列散热风扇
  10. 监督学习之分类学习:线性分类器
  11. 一文搞懂什么是神经网络Neural Network【详细介绍】
  12. CVE-2017-12635+12636 复现+反弹shell
  13. java word 颜色设置_Java 给Word文档添加背景颜色
  14. Revit打印工具 RevitPrinter
  15. 华栖云与阿里云首推“云上电视台”,可实现内容云端一站式制作
  16. 有源rc电压放大器实验报告_我们一起来认识一下RC反馈回路
  17. Arduino实现压力传感器(使用HX711模块)
  18. 小程序导航栏颜色设置
  19. VMware安装Ubuntu Kylin系统
  20. 【我的渲染技术进阶之旅】Google开源的基于物理的实时渲染引擎Filament源码分析:Android版本的Filament第一个示例:sample-hello-triangle

热门文章

  1. 为什么曾经“火极一时”的曲面屏,如今却越来越被冷场?
  2. 计算机辅助设计效果论文,计算机辅助设计应用于艺术设计的特点
  3. 投资理财类的Web网站和APP,提供的核心功能都一样
  4. postgresql and git
  5. java point类求两点间距离_JAVA 根据经纬度获取两点之间的距离(转载)
  6. java代码审计入门--01
  7. CSDN改变文章字体颜色,字体大小,字体型号,字体居中、居右、颜文字
  8. 1.2.3 ABCDE类地址
  9. T检验与Z检验的区别
  10. uniapp实现小程序拖拽购物车,类似苹果的 Assistive Touch且限制拖拽位置不能脱出页面安全区;