查看原文
其他

Unite 2017 | eaglEEye性能测试平台详解

高川 Unity官方平台 2018-11-15

Unite 2017的国内技术专场为参会者们分享了Unity引擎相关的大量功能剖析,其中就包括Unity全新推出的性能测试平台eaglEEye。本文将由Unity企业支持经理高川,为大家分享eaglEEye相关内容。


在Unity开发过程中,开发者总会面临许多性能瓶颈问题。在Unity技术支持团队做过的现场支持中,性能问题也是最多被提及的问题。优化性能,是每个项目必然经历的过程。而因为数据难以解读,问题难以定位从而使开发者对深度优化望而却步。


什么是优化

在现场支持过程中,很多开发者认为按照某种标准数值进行执行,就可以得到不错的优化效果。这种看法是很片面的。优化不是简单的标准化执行,而是一个复杂而反复的过程。针对不同的游戏平台,不同的用户群体,甚至不同的团队,优化的目标和过程都是完全不同的。所以,优化工作没有金科玉律,要根据具体的项目情况来制定合理的优化策略和优化目标。


优化过程总体而言是一个去峰填谷,时空转换的过程。通过各种手段和技巧,消除木桶效应中的短板,达到项目整体性能的最佳均衡状态。


性能优化工具

工欲善其事,必先利其器。对于开发人员而言,性能分析工具在优化过程中起着至关重要的作用。


目前比较常用的工具包括:

 

Unity Profiler



Unity Profiler是基于Unity引擎内部软件实现的性能分析工具。Profiler具有比较好的数据可读性,数据分类明确,同时由于是第一方的工具,所以数据的准确性是有保证的。但是Profiler所展示的数据量有限,往往不能对比长时间测试的结果。同时由于是软件层级的采集,所以数据的全面性受到了限制。而数据的解读,对于开发者而言并不简单。


Xcode Instruments



Xcode Instruments是可用于iOS操作系统的性能分析工具。基于OS层级的数据抓取,对数据的准确性和全面性都有比较好的保证。同时具有强大的问题追踪能力,能够快速定位到问题所在。但是由于它仅仅能针对苹果相关设备,所以泛用性受到了限制,同时采集到的数据与Unity引擎层的对照比较困难。


GAPID

GAPID是Google正在开发的一个应用于Android OpenGL和Vulkan设备上性能分析工具。其抓取的数据也是来自OS层级,数据准确性高,但数据主要是针对显卡端。因为是针对Android平台,所以泛用性同样受到了限制。另外该工具目前还在开发阶段,稳定性还需要提升。


自研/第三方数据分析

自研或者第三发数据分析服务会比较有针对性,尤其对国内开发者会更加友好易用。同时平台化的服务形式,使数据积累和基于历史数据的分析成为可能。但是问题在于,数据分析的可靠性来自于分析服务开发者对Unity引擎的了解程度和对项目开发的经验积累。同时Unity引擎的快速迭代也会对分析平台的更新速度提出挑战


eaglEEye性能分析平台

eaglEEye是Unity推出的在线数据分析服务平台。eaglEEye的初衷是为了开发者对游戏优化的门槛,使优化更加简便易行。


目前eaglEEye平台推出了四个分析模块,分别是总体预览、CPU耗时和帧率分析、内存分析、渲染分析。


其中总体预览部分通过对测试数据进行整体预览,来了解各个模块的使用情况,对性能分析有一个初步的定位。



CPU耗时和帧率分析会主要针对测试中出现的耗时函数,模块耗时等情况,通过可互动的数据曲线和数据图的方式展示。可以通过对曲线全部或者部分数据进行框选来分析特定部分的性能问题。



内存分析主要针对Native内存和Mono内存进行分析。重点定位GC的产生,Mono内存池的使用情况,分析Mono内存池增长是否正常,是否可以通过优化内存分配避免过度使用等。



渲染部分主要分析Draw Call/Setpass Call, 模型和三角面数使用情况,以及合批效率。通过图表对比,可以来判断动态合批和静态合批的所获得的收益是否值得开启这两个选项。



同时,所有模块中,关于Unity Profiler中的tag也会给出对应的tag提示,帮助开发者理解该tag的含义。

 

eaglEEye项目还在继续开发中。eaglEEye的计划中,还包括了:

  • 无SDK测试,使开发者无需集成任何SDK到工程中,即可使用eaglEEye进行性能测试。减少了对工作流水线的冲击。

  • OS层级的数据收集,通过与OS平台工具的对接,收集更多OS层级的数据,与Unity软件层级的数据进行对比分析,获得更全面准确的结果。

  • 更多特性的加入,比如静态资源分析,资源快照分析,项目分析报告等等。


同时eaglEEye分析和优化也会和Unity技术支持团队的Project Review服务联动,为开发者提供线上线下全面的优化服务。


希望eaglEEye能帮助开发者更快更好的分析和优化项目,享受游戏开发的乐趣。


更多Unity相关技术文章

Unity 5导入Blender资源完整指南

Unity中如何使用Raymarching实现惊艳的图形效果

进阶Unity开发不能错过的Unity完整游戏教学案例

Unity 5 教程 | 低多边形场景的光照与后处理

使用Unity在HoloLens中实现《终结者》视觉HUD


点击“阅读原文”进入Unity官方中文社区

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存