在性能优化时,你是否也遇到过这样的困扰:和性能相关的参数非常多,为什么能保障广度,就没法保障深度?这是因为数据的获取本身存在打点消耗,如果获取全量数据势必存在大量打点操作,导致收集的数据失真。原先大家使用的GOT Online测评就分为4个模式单独采集,也正是出于数据互相不干扰的考量。
不过,这也给测试同学增添了额外工作量。为了两者兼得,我们在UWA SDK 2.4.5版本中,将GOT Online的采集模式做了调整:支持自定义数据采集的配置,即在Overview模式中可以配置Resource和Lua的数据采集。如此一来,存在逻辑关系的性能数据就能在一份报告中同时获取,大幅提升了测试效率,又达到了分析的目的。
由于同时开启不同数据采集模式对性能会有不同程度的影响,建议大家配置测试需求的时候留意说明文档的注意事项。
IL2CPP包支持Mono数据深度分析
Mono堆内存分配的优化一直是性能优化中非常重要的一环。我们知道,Mono堆内存的持续分配不仅会造成内存占用,还会触发GC造成卡顿。如果项目存在较严重的Mono泄漏,撑爆内存造成闪退的情况也时有发生。
现在,UWA在IL2CPP包上也支持了Mono数据的深度分析,集成SDK 2.4.5并在出包时勾选Script Debugging选项,即可在IL2CPP包上进行Mono数据的采集和分析,再也不用费时费力出Mono包了。
通过GOT Online Mono模式对项目的堆内存分配和泄漏情况进行数据采集和分析,开发者可以快速定位项目Mono模块的性能问题 ,并着手进行优化。
更细致的内存分析,轻松排查资源、Mono和Lua
新增内存分析模块,可分为资源内存、Lua内存和Mono内存这3个模块。
当测试中未开启Resource模式时,资源统计模块会统计主要场景(测试起始帧、每千帧、场景切换帧和结束帧等)中纹理、网格、Shader、字体、RenderTexture、粒子系统等主流资源的数量和大小;而当开启Resource模式后,则会对上述资源的使用详情做更详细的采集。
以纹理资源为例,开启Resource模式后,可以在报告中获取纹理资源的内存占用、数量峰值、宽度、高度、生命周期和是否开启了R/W等属性,以便开发者对纹理的使用情况做更详细地排查。
当测试时配置开启Lua模式时,即可在Lua内存下查看总体堆内存、堆内存具体分配和Mono对象引用的数据,便于开发者对项目中Lua内存的分配和占用情况进行分析。
由于Lua对Mono对象引用也会造成Mono堆内存无法释放造成泄漏,所以关注Mono对象引用模块也会对Mono内存泄漏情况的优化有所参考,详细查看这篇文章《新功能!Lua,是时候和你走走心了!》。
Mono内存分析则包括Mono Reserved和Mono Used两个指标,以便开发者团队关注Mono堆内存的内存占用和实际使用的情况。
当Mono堆内存较高时(UWA建议控制在80MB以内),就建议使用GOT Online Mono模式,对Mono堆内存分配进行进一步的测试和优化。
新增重点函数卡顿分析
最新版本将卡顿分析界面做了细化,分为重点函数分析和卡顿点分析两个页面。
1. 重点函数分析
包括了GC.Collect卡顿、Unload Unused卡顿、加载卡顿三类常见的卡顿情况。在重点函数分析页签下,UWA对测试过程中不同函数下的重点函数进行了整合。
以加载卡顿页为例,在这一页签下,可以查看Shader.Parse、Shader.CreateGPUProgram、Instantiate和LoadingReadObject函数的耗时情况、卡顿位置和调用频率等数据,以便开发者快速定位卡顿原因。
2. 卡顿点分析
在卡顿点分析页,除了熟悉的每帧耗时曲线、函数指定帧堆栈信息和函数时序调用外,新增了卡顿点分析功能。
通过左侧的饼状图,可以看出卡顿帧的卡顿原因,点击还可以对造成卡顿的函数进行进一步下探。
另外,当已知项目的Lua压力较大时,也可以在测试开始时勾选Lua选项。此时,报告中的函数指定帧堆栈信息和函数时序调用模块也会获取到Lua相关的函数,对项目进行Lua模块的优化提供更详细的数据参考。
资源管理—高效定位加载瓶颈
当项目资源越复杂、资源数量越多,资源加载和卸载时的卡顿感就越明显。通过GOT Online Resource模式下的资源管理模块,我们可以准确定位到是哪个资源造成的耗时瓶颈,查看到每个资源的加载/卸载、每个GameObject的实例化/激活等具体耗时情况。
开启Resource模式并勾选资源管理模块后,即可在资源管理模块查看到AssetBundle加载&卸载、资源加载&卸载、资源实例化&激活4大模块。
在资源管理汇总界面,UWA将需要注意的加载耗时、频率TOP 10的问题资源直接列出,通过对这些重点对象快速处理,能在短时间内达到立竿见影的优化效果。同时,也可以重点分析不同加载接口的使用情况,比如在“资源加载&卸载”界面,用户可以看到被加载的资源属于哪个AssetBundle,用了哪个接口以及加载的耗时、次数等。
GPU耗时获取方式更新
在此次更新中,UWA更新了GPU耗时的统计方式,在更新SDK后,GPU耗时统计会更稳定,兼容机型也更广。
GPU耗时的推荐值和CPU耗时一样,当项目需要维持在30帧时,GPU耗时应低于33ms(UWA推荐控制在28ms更佳),而当项目需要持续在60帧时,GPU耗时则需要低于16ms,否则容易掉帧;项目的GPU压力较大时,就需要结合GPU Counter模块的参数,包括GPU负载、GPU着色、GPU带宽、GPU图元和GPU Shader Cycles等参数,对项目的GPU压力情况进行优化。
以上就是本次UWA SDK更新的主要内容,UWA一直致力于帮助用户更高效地定位项目的性能问题,本次更新支持了Overview模式下Resource和Lua模块的数据获取,希望开发者可以节省排查问题的时间。
快来UWA官网下载SDK使用吧!下载链接:https://www.uwa4d.com/#download
网友评论