技术分享连载(六十五)

原文连接:https://blog.uwa4d.com/archives/1809.htmlhtml

咱们将从平常技术交流中精选若干个开发相关的问题,建议阅读时间15分钟,认真读完必有收获。若是您有任何独到的看法或者发现也欢迎联系咱们,一块儿探讨。性能优化

UWA QQ群:465082844
UWA 问答社区:answer.uwa4d.com函数


性能优化

Q1:在UWA性能报告中,看到PutGeometryJobFence开销较高,请问这个该如何进行优化?
请输入图片描述性能

就目前咱们所优化过的项目而言,推测PutGeometryJobFence是Unity项目的主线程在等子线程的一些网格计算操做完成,其在不一样的模块中均有出现(UGUI模块、渲染模块、Mesh.Skin操做、Animator动画模块等等),出现的地方不一样,其自己含义也并不相同,不能一律而论。优化

而就上图中的耗时来看,若是项目中使用了UGUI,那么很大概率(>80%)是因为UI模块的不合理操做所致。咱们在Unity5.3~5.5版本中深度优化了多款手游,均不一样程度地遇到了该值耗时较高的问题,而且该函数与WaitingForJob常常成对出现,特别是在Android平台上。动画

下图为一款咱们深度优化的ARPG项目中,PutGeometryJobFence在游戏运行时的耗时开销。
请输入图片描述网站

经过现场进行定位,咱们发现PutGeometryJobFence的开销,其实是主线程在等子线程中的耗时完成的等待时间,且几乎所有是等待Canvas.GeometryJob,以下图所示。
请输入图片描述spa

所以,咱们直觉猜想该UI模块的重建开销很高,以致于子线程的计算压力过大,而PutGeometryJobFence较高,也极可能是主线程的等待时间。为了验证这一猜想,咱们开始大力定位和优化该项目的UI模块的重建开销,待调整和优化项目的UI模块后,其WaitingForJob的运行时开销大幅下降(接近于0ms),而PutGeometryJobFence的CPU耗时则基本上能够忽略不计了。
请输入图片描述线程

同时,须要说明的是,以上仅是咱们目前在多款Unity5.3~5.5项目中的具体优化经验,但并不能说明PutGeometryJobFence耗时高就必定是由UGUI模块致使,随着Unity引擎的不断升级,其背后也会隐藏着更多的含义。所以,但愿你们在优化时就具体问题进行具体分析、具体解决。orm


性能优化

Q2:下图中,函数"Transform.set_position"的开销很大,请问有办法优化吗?
请输入图片描述

从图中看,是经过Deep Profiler进行的函数耗时统计,首先Deep Profiler自己对于耗时的统计影响很大,一般在Deep Profiler下调用次数越多的函数,其耗时的统计就会越明显地偏高,所以,咱们首先建议关闭Deep Profiler,同时用Profiler.BeginSample/EndSample将修改Position的代码包进来,再查看其耗时,相对会更加准确。

其次,能够观察到有180次的CanvasRenderer.OnTransformChanged的回调,移动UI元素相比于移动其余的元素确实会有额外的开销,建议减小没必要要的UI元素的移动,好比经过增长移动阈值,下降移动频率等等。


性能优化

Q3:Unity Profiler中的Canvas.RenderSubBatch是否属于UI上渲染的开销?和重建有关系吗?
请输入图片描述

这个确实是UI模块(UGUI)的渲染开销,可是跟UI的重建并没有太大关系,主要仍是跟UI界面的渲染Draw Call相关。从上图中能够看出,UI Draw Call达到45个,该值较高,研发团队渲染对UI模块的Draw Call进行进一步优化。


性能优化

Q4:这个Clear的耗时为何这么大,有什么能够优化的方法吗?
请输入图片描述

图中的Clear耗时确实很高,但须要研发团队关注该高值是小几率出现,仍是常常出现。若是是前者,则无需过度担忧,但若是是后者,则须要研发团队关注相机图像后处理操做的使用。Clear操做通常是用来清除Camera的各类Render Buffer,当图像后处理使用的越多,则同一帧中开辟更多的Buffer的几率也越大,从而形成Clear的开销也较高。对此,若是你的项目中Clear耗时较高,且高耗时较为频繁,则建议先关闭图像后处理操做,来查看该状况是否有所好转。而后再逐步开启各个图像后处理操做,逐步定位形成Clear较高的耗时根源。

今天的分享就到这里。固然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,咱们早已在UWA问答网站(answer.uwa4d.com)上准备了更多的技术话题等你一块儿来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com 官方技术QQ群:465082844(仅限技术交流)