两个月前,UWA发布了Unity性能数据分析报告,对提交测试(登陆www.uwa4d.com)的所有项目进行了客观的分析和汇总。今天,我们将最新的测试数据再按类型分列,并将其具有属性特征的几大性能模块数据在此分享,希望能给相关行业的研发人员一些更为明确和建设性的意见。
总体性能
1)iOS设备的CPU性能普遍高于Android设备。
2)Android设备上项目性能普遍偏低,CPU达标比例仅为28.5%。
下面我们就来具体分析下这些主流模块的开销情况。
一、渲染模块
严重程度:噩梦
Draw Call的主体使用范围为45~185,峰值平均为215;
渲染三角面片的峰值集中在62K~152K,峰值平均为75K面。
UWA推荐:渲染三角面片峰值< 100K,目前达标比例: 53.9%。
不透明物体的渲染耗时平均为3.5ms,半透明物体的渲染耗时平均为4.5ms。
58.3%的项目使用了相机后处理特效,其CPU耗时主要集中在0.1~8.0ms,具体分布如下:
1)MMORPG游戏的场景渲染三角形面片数量普遍较高,仅53.9%的项目能够将场景的渲染三角形面片数控制在10w以下;
2)相机后处理特效在该类型游戏中已经开始较为广泛的使用。
二、UI模块
严重程度:地狱
1)使用NGUI作为UI解决方案的项目占据了相当高的比例,NGUI目前仍然是研发团队对于UI系统使用的主要解决方案;
2)UI模块的性能开销很高,将近80%的研发团队都面临较为严重的性能问题;
3)从性能上来看,UGUI无论从CPU占用还是堆内存分配,均大幅领先于NGUI。
三、逻辑代码
严重程度:地狱
1)GC触发频率很高,是造成卡顿的主要原因之一;
2)90%以上的游戏团队需要对GC的调用进行进一步规划,对代码的堆内存分配进行大力优化。
1)Instantiate实例化操作平均每次调用的CPU耗时主要分布在: 2.0~20.5 ms,均值为6.2ms,每1万帧总调用次数主要分布在: 109~1933 次。
2)Instantiate的频繁实例化是太多数研发团队非常容易忽视的问题;
Log输出操作平均每次调用的CPU耗时主要分布在: 2.6~22.2 ms,均值为7.2ms。
1)Shader解析操作平均每次调用的CPU耗时主要分布在: 6.5~217.5 ms,均值为28.8ms。
2)Shader解析时间较高,且大多数情况是相同Shader的重复开销,值得研发团队密切关注。
四、粒子系统
严重程度:普通
五、动画模块
严重程度:普通
目前仅使用Mecanim动画系统的MMO游戏项目占比为35.3%,仅使用Unity 3.x老版本动画系统的占比为19.3%,两种系统混合使用的占比为44.4%。
内存模块
内存泄露几乎是所有手游都难避开的问题,其在MMORPG手游中出现的情况占比为51.6%。
总体内存
严重程度:地狱
总体堆内存
严重程度:普通
项目的内存占用很大一部分来自于资源的使用,下面我们将对项目中主流资源的使用情况进行分析。
纹理资源
严重程度:噩梦
Mesh资源
严重程度:噩梦
Render Texture资源
严重程度:噩梦
字体资源
严重程度:普通
Shader资源
严重程度:普通
AnimationClip资源
严重程度:普通
以上是UWA以项目类型的属性分类发布性能总结报告,之后我们将不断与大家分享其他类型的数据,如ARPG,ACT,SLG等。我们深信数据是会说话的,总有规律值得我们追溯求实、鉴往知来。同时我们也会不断细化评析的标准、划分,以使得这些数据更有代表性和说服力。
当然,UWA提供的不仅是性能深度测评的工具,解决开发过程中千变万化的需求才是服务的宗旨。简单优化,优化简单!我们会将服务至上的态度和诚意,努力延伸至每个开发者的身边。