破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?( 二 )


破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
另外,Unity Profiler常见的一个应用场景是在这里面检查GC的allocate,就看mono堆内存有哪些分配,如果分配过多的话就要优化它,避免mono内存回收的卡顿。
Memory Profiler是用来优化内存整体消耗的,因为这个工具可以图形化地展示你的内存在哪些模块内分配的,是一个render texture,还是普通的纹理,还是UI,还是其他的一些元素分配的,非常清晰地可以看到你的内存分配的布局。
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
那使用Unity官方工具分析完之后,我们一般都还要用第三方的工具,最主要用的是苹果的Instrument,因为很多性能数据都是在比较硬件底层的,在引擎这一层有些数据是我们很难拿到的,比如说GPU的一些详细的消耗数据往往都是需要通过操作系统或者是硬件厂商来提供的工具进行分析。
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
Instrument里面最常用工具有三个,第一个工具是Time Profiler,是用来做CPU性能的分析。Time Profiler它相对于Unity的Profiler比较方便的一点是Unity Profiler里面一般只能看到一帧的消耗,它没有办法做一段时间内消耗的统计。Time Profiler里面有一个比较好用的功能就是可以选择一个时间范围,它可以统计这段时间范围内所有函数消耗的排序。后面也会讲到我们在UPR里面实现了一个替代的方案。
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
另外,Instrument里面的Allocation是主要做内存消耗分析的。它一个最常见的用途是用来检测内存泄露。它的主要功能是你可以看到在一段时间内有哪些内存分配出来但是没有释放掉。如果我从一个主菜单场景进入到战斗场景,再回到主菜单,发现有些内存没有泄露,那这些内存很有可能是泄露的。所以后面我就可以重点地看这些没有释放的内存它们具体是哪里的内存,来确定它是不是泄露,如果是泄露的话,就可以确定怎么解决这个内存泄露。
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
另外一个常用的功能就是XCode里面抓帧的功能。因为我们要做GPU性能分析,经常是需要抓当前渲染的一帧来看它的每个drawcall的耗时,或者是看所有shader耗时的排序,甚至是看一个shader里面某一个指令的耗时是多少,这在XCode里面都有非常清晰的数据可以展示出来。这些数据其实在Unity Profiler里面是不能提供的。
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
刚才提到的苹果的XCode里面的功能相对是比较完善的,在一个工具里面,基本上提供了你所需要的常用的功能,但是对安卓平台来说相对复杂一些,因为安卓它的硬件以及操作系统都有一些碎片化。所以说如果我们在安卓上做GPU的性能分析,如果是高通的芯片就需要使用高通的Profiler,如果是用ARM Mali的芯片,就需要用Mali的GPU的Profiler。
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
另外,像Google的安卓Studio和RenderDoc也是比较常用的分析工具。现在是可以看到我们过去在面向企业客户提供的这些性能服务里面是要使用大量的性能分析工具。对我们的开发者来说,如果大家想自己去做这种性能分析的话,其实它有很大的痛点,因为这个需要使用的工具数量太多,种类太多,对开发者来说是需要消耗大量的时间去学习这些工具的使用方法。而且对这些工具里面所有的数据都需要有一个深入的理解。所以说为了解决刚才提到的这些痛点,我们在不久前推出了一个叫做UPR的线上的性能分析服务。
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
它的核心还是基于Unity的Profiler的数据,通过我们UPR的工具,我们是可以把你们游戏里面测试的过程中的产生的数据同步发送到我们UPR服务器上面,然后在我们UPR的云端进行性能数据的分析,然后通过可视化的方式把它展示出来。
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
这里主要是介绍了我们UPR的一些优点,它相对于过去Unity Editor里面的Profiler以及那些第三方的工具有哪些优点。首先它是一站式的工具套件,过去我们在做Project Review的时候,我们要使用各种各样的工具,要不停地在各种工具之间进行切换。现在我们如果用UPR,基本上只需要用这一个工具就能满足你性能优化80%-90%的需求。可能只有很少的功能需要使用第三方的工具进行分析。