研发团队反馈部分UI界面的交互反应速度较慢,具体操作如下图:点击主页面(左图)的“英灵”按钮,UI界面会进入过渡界面(中图),最终进入“英灵”界面(右图),整个过程中打开速度较慢,大约4秒钟。

我们在红米Note2(低端)和三星S6(中高端)设备上分别进行了尝试,点击该按钮后,UI界面出现确实较慢(4秒钟左右)。
我们首先通过Profiler来进行测试,下图为红米Note2设备上的性能分析。我们发现,在点击“英灵”按钮后,UI开启过程中主要经过两个阶段:红框部分为资源加载期,蓝框部分为UI界面加载期。可以看到,虽然都是Loading.UpdatePreloading函数在加载,但其每帧的开销均很小,在蓝框期间,游戏的总耗时更是小于33ms。这说明研发团队对于此处的UI界面加载为异步加载。
上图为资源加载期的CPU耗时,下图为UI界面加载期的CPU耗时
对此,我们的建议如下:
(1) 加载切换由于是异步加载,且每帧的CPU利用率过低,因此,建议研发团队对特定UI尝试同步加载来减少UI的切换时间;
(2) 同步加载可能会造成切换界面运行得“不流畅”,对此,研发团队也可以考虑加大每帧异步加载的资源数量,从而减少红框和蓝框处的等待时间。
同时,我们在UWA性能报告中发现了每次点击UI后,均有规律性的单帧高开销(Profiler中存在耗时卡顿,但未发现该具体耗时项,我们推测是Profiler统计时出现了跳帧问题),如下图红框所示。经过定位,其52%的开销来自于Resources.UnloadUnusedAssets API,如下图性能堆栈中的GarbageCollectAssetsProfiler所示。对此,建议研发团队尽可能避免频繁的Resources.UnloadUnusedAssets,根据资源用量每5~10分钟调用一次即可。
该UI界面加载耗时较大主要有两方面组成:
(1)大量资源的异步加载,导致每帧CPU利用率较低;
(2)Resources.UnloadUnusedAssets API的不合理调用。
对此,建议研发团队根据第三节中的详细说明进行进一步地检测和完善。
原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。