如何用UPA优化性能?先读懂这份报告!
一、概述
打开一份UPA报告时,最先看到的就是概述页面,这也是我们推荐用户第一时间关注的页面。概述页面一开始会列出测试的基本信息,并根据腾讯游戏的性能标准,给出本次测试的结果(通过,不通过和警告):
接下来,会列出本次报告详细的性能数据:
一般来说,游戏的性能问题主要有两方面:帧率和内存。帧率分为CPU耗时和GPU耗时,内存问题分为游戏逻辑内存(在Unity游戏中即Mono内存)和资源内存。
上述的详细性能数据都包含其中:帧率反映CPU耗时和GPU耗时情况,ReservedMono内存反映游戏逻辑内存情况,纹理资源、网格资源、动画资源和音频资源反映资源内存情况,DrawCall和Tris反映GPU耗时情况。通过上述数据,用户可以大概知道游戏的性能问题出在哪方面。
除了详细数据以外,UPA还结合Unity现场支持专家们的经验,对常见问题进行了总结,并在报告中自动进行分析:
针对这些问题,我们也总结了相应的优化建议:
根据提供的优化建议,用户可以快速的解决一些常见性能问题。另外,我们的问题库及经验库也会不断更新优化,带给用户更多实用的优化经验。
通过概述页面,我们可以大致了解到游戏的性能数据,出现的性能问题,以及对应的优化建议。但只有这些是不够的,如果性能问题比较复杂,就需要更详细的数据帮助我们定位及优化,下面就来看看UPA提供的详细性能数据有哪些。
二、CPU模块
CPU模块主要提供了CPU耗时相关的详细数据。在定位CPU相关性能问题时,我们可以从两方面入手:
1、整体耗时
如果游戏的整体帧率都比较低,需要重点关注某个模块或者某个函数是否一直耗时较高,首先,看一下模块耗时:
游戏的FPS均值13.71较低,同时渲染模块耗时(RenderingTime)一直较高,可以尝试优化渲染相关性能。其次,我们也可以看一下耗时排名Top10的模块,并尝试优化:
2、单帧耗时
如果游戏整体帧率正常,偶尔卡顿的话,就需要关注单帧耗时较高的帧。通过下图可以方便找到单帧耗时较高的情况:
针对耗时较高的帧,查看该帧详细的模块耗时情况:
模块耗时可以展开,查看模块间的调用关系,并最终确定导致单帧耗时较高的模块。
由于有些模块属于引擎内部模块,用户可能不太清楚其具体作用,我们也对一些模块的作用进行了说明:
三、图形模块
图形模块反映了渲染耗时情况,并通过一些指标侧面反映了GPU的压力。在渲染导致游戏卡顿时,需要重点关注图形模块。
1、模块耗时
UPA提供了一些渲染相关的模块耗时信息,通过这些信息我们可以判断游戏的摄像机使用是否合理,以及Shader相关的耗时是否较高:
Camera.Render模块反映了游戏过程中摄像机的数量和渲染耗时。
Shader相关模块反映了Shader处理的耗时。
2、合批
除了摄像机和Shader方面的优化,合批也是图形优化中非常重要的一点。由于GPU是单独的硬件,其性能消耗较难采集,因此一般用一些性能指标间接反映GPU的压力情况,最典型的就是Drawcall(Unity5.0以后改为SetPasscall)指标。在Unity引擎中对Drawcall最直接的优化方法就是合批(Batch)。
合批又分为静态合批(StaticBatch)和动态合批(DynamicBatch),其原理就是把GPU的压力分一些到CPU或内存,因此开启合批会带来额外的CPU或内存消耗,需要我们进行权衡。
以静态合批为例,UPA会列出开启静态合批以后节省的Drawcall数量(图中黄线部分),并以总Drawcall数量作为背景进行比较,用户可以清晰看出开启静态合批以后带来的收益,以此决定是否进行合批。
3、其他数据
除了上述数据意外,UPA还提供了每帧的VBO、面数等渲染指标,方便有经验的用户利用这些指标进行渲染性能优化:
四、内存模块
内存模块反映了游戏各方面的内存占用情况,首先我们需要关注游戏整体的内存占用:
Total Reserved表示引擎分配的内存,Total Used表示引擎实际使用的内存,两者的差值(图中红线部分)表示空闲的内存。通过上图我们可以知道引擎分配内存是否在合理范围,空闲内存是否较多。
如果引擎分配内存较大,或者空闲内存较多,都是不合理的,这时就需要知道问题出在哪个部分,Unity引擎分配的内存分为四个部分,在UPA报告中都以曲线展示:
1、Unity
这部分表示引擎本身逻辑需要使用的内存,资源内存也包含在其中,如果需要进行优化,建议直接优化资源方面的内存,UPA中列出了纹理、网格、动画、音频和材质等资源的内存占用,可以针对性进行优化(以纹理资源为例):
2、Mono
Mono内存表示游戏中脚本分配的内存,游戏逻辑由开发人员自己编写,并且一般比较复杂,因此较容易出现内存问题(虽然Mono本身提供了垃圾回收机制,但仍然可能出现内存泄漏)。
对于Mono内存,我们需要关注总内存Reserved及空闲Unused,防止内存泄漏。
3、GfxDriver和Fmod
GfxDriver和Fmod内存分别表示Unity底层渲染模块和音频模块的内存,GfxDriver内存较高的话建议对Shader和Texture等资源进行优化,Fmod内存较高的话建议对AudioSource和AudioClip等资源进行优化。
4、Profiler
这部分表示Unity Profiler分配的内存,不会带到上线版本,在确认内存占用情况时需要去除该部分内存。
五、总结
在UPA报告中,展示了游戏的整体性能情况,并针对常见的性能问题提供了问题列表及优化建议。对于CPU耗时和GPU耗时部分提供了详细的性能数据,包括各模块耗时,以及各种渲染指标,用户可以利用这些详细性能数据定位并优化游戏的性能问题。
在内存方面,UPA提供了各部分的内存曲线,使用户可以了解各部分内存分配情况,但是对于详细定位及优化问题还缺少关键数据。针对内存优化中最常见的资源内存优化及Mono内存优化,UPA分别提供了资源测试和Mono内存测试类型,帮助大家获取更详细的内存数据,更方便的优化内存问题。
UPA—— 一款针对Unity游戏/产品的深度性能分析工具,由腾讯WeTest和unity官方共同研发打造,可以帮助游戏开发者快速定位性能问题。旨在为游戏开发者提供更完善的手游性能解决方案,同时与开发环节形成闭环,保障游戏品质。
点击链接:http://wetest.qq.com/cube/ ,下载WeTest助手APP ,立即使用UPA,
如何用UPA优化性能?先读懂这份报告!的更多相关文章
- UPA深度性能报告解读
WeTest 导读 UPA作为腾讯WeTest与Unity官方联合打造的客户端性能分析工具,为开发者提供了极大的便利和效能提升.产出的分析报告内容详尽,但您是否真的读懂了报告?是否了解每项数据的含义? ...
- 一文读懂HTTP/2及HTTP/3特性
摘要: 学习 HTTP/2 与 HTTP/3. 前言 HTTP/2 相比于 HTTP/1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何 ...
- 一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现
一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现 导读:近日,马云.马化腾.李彦宏等互联网大佬纷纷亮相2018世界人工智能大会,并登台演讲.关于人工智能的现状与未来,他们提出了各自的观点,也引 ...
- 从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路
本文原作者阮一峰,作者博客:ruanyifeng.com. 1.引言 HTTP 协议是最重要的互联网基础协议之一,它从最初的仅为浏览网页的目的进化到现在,已经是短连接通信的事实工业标准,最新版本 HT ...
- 读懂SAP Leonardo物联网平台
读懂SAP Leonardo物联网平台 https://blog.csdn.net/weixin_42137700/article/details/81903290 本文比较系统.全面地介绍了SAP ...
- 一篇文章,读懂Netty的高性能架构之道
一篇文章,读懂Netty的高性能架构之道 Netty是由JBOSS提供的一个java开源框架,是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架, ...
- [转帖]从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路
从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路 http://www.52im.net/thread-1709-1-2.html 本文原作者阮一峰,作者博客:r ...
- 如何读懂statspack报告
前言:这篇文章是我从网上找到的,但可惜不知道是哪位大侠写(译)的,因此这里无法注明了.仔细看了看,这篇文章对初学者应该很有帮助,写的比较详细,通俗易懂,因此整理一下,便于阅读:内容略有调整,不单做调整 ...
- [转载]循规蹈矩:快速读懂SQL执行计划的套路与工具
作者介绍 梁敬彬,福富研究院副理事长.公司唯一四星级内训师,国内一线知名数据库专家,在数据库优化和培训领域有着丰富的经验.多次应邀担任国内外数据库大会的演讲嘉宾,在业界有着广泛的影响力.著有多本畅销书 ...
随机推荐
- mybatis的Mapper文件配置
一.resultMap resultMap 元素是 MyBatis 中最重要最强大的元素. 该配置节点下如下子节点配置 id – 一个 ID 结果;标记结果作为 ID 可以帮助提高整体效能 const ...
- spring中的aop的xml配置方式简单实例
aop,即面向切面编程,面向切面编程的目标就是分离关注点,比如:一个骑士只需要关注守护安全,或者远征,而骑士辉煌一生的事迹由谁来记录和歌颂呢,当然不会是自己了,这个完全可以由诗人去歌颂,比如当骑士出征 ...
- gulp+babel面向未来变成
1.需要本地安装node; 2.安装gulp: 3.在项目根目录启动node; 安装babel组件: npm install --save-dev babel-core npm install --s ...
- Android视频直播:流媒体服务器搭建
一.前言 实时视频直播是这两年非常火的技术形态,已经渗透到教育.在线互娱等各种业务场景中.但要搭建一套实时视频直播系统,并非易事,下面针对直播系统的的搭建做一下说明: 1.1 通常的直播系统的技术模型 ...
- Hadoop 2.6.0-cdh5.4.0集群环境搭建和Apache-Hive、Sqoop的安装
搭建此环境主要用来hadoop的学习,因此我们的操作直接在root用户下,不涉及HA. Software: Hadoop 2.6.0-cdh5.4.0 Apache-hive-2.1.0-bin Sq ...
- AJAX跨域问题解决方法(3)——被调用方解决跨域
被调用方解决跨域是指在HTTP响应头中增加指定的字段,允许调用方调用 可以在两种地方增加1.apache/nginx(HTTP服务器)2.tomcat(应用服务器) 浏览器如何判断跨域?仔细观察可以发 ...
- JDK1.8源码(二)——java.lang.Integer 类
上一篇博客我们介绍了 java.lang 包下的 Object 类,那么本篇博客接着介绍该包下的另一个类 Integer.在前面 浅谈 Integer 类 博客中我们主要介绍了 Integer 类 和 ...
- windows7下django项目搭建
参考视频教程 http://study.163.com/course/ http://www.bilibili.com/video/av8915600/ http://www.bilibil ...
- python爬微信公众号前10篇历史文章(2)-拼接URL&发送http请求
如何拼接想要的url http://weixin.sogou.com/weixin?type=1&page=1&ie=utf8&query=%E5%A4%A7%E7%BA%BD ...
- [Bzoj 2547] [Ctsc2002] 玩具兵
2547: [Ctsc2002]玩具兵 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 317 Solved: 152[Submit][Status] ...