你又可以大幅提升项目性能啦!

news/2024/7/10 3:46:06 标签: UWA, 优化, 性能, 研发, 新功能

原文链接:https://blog.uwa4d.com/archives/1614.html

在之前的UWA性能检测与分析报告中,研发团队只能通过加载模块的整体耗时来查看该模块的性能瓶颈。在今天推出的新版本中,我们又前进了一大步:通过对资源管理进行定量分析,让大家看到每个资源的加载/卸载、每个GameObject的Instantiate/Destroy等具体耗时情况,从而让优化更显直观具象!下面让我们一起来了解这些新特性吧!


新功能特性详细说明

UWA本次新功能的特性主要为资源加载、GameObject Instantiate/Destroy、GameObject Active/Deactive、资源管理汇总四大功能模块,下面小编将一一为大家说明。

一、资源加载

重点分析项目通过Resources和AssetBundle的加载开销,说明如下:

1. AssetBundle资源加载
在AssetBundle加载页面中,用户可以看到每个具体资源在项目检测过程中的具体CPU耗时,同时我们在之前版本的基础上还明确了资源的加载母体AssetBundle信息,这样可以帮助研发团队更加方便地定位和优化
请输入图片描述

2. Resource加载
支持用户在Resource加载页面中对耗时选项进行排序,其资源加载耗时的Top10即可一目了然。
请输入图片描述

特别说明:新功能不仅可以让用户看到整体加载耗时和加载次数,同时还可以通过图表来显示具体每次加载的位置和耗时。如下图,资源文件cite_girl(图中右上角)是通过AssetBundle.Load来加载的,可以看到在项目检测过程中,该资源被频繁加载,且每次加载耗时主要集中在100~200ms之间。
请输入图片描述

下图中的SpeedRaceUI和UIscene_BJT是通过Resources.Load来加载的,可以看到在项目检测过程中,该资源被频繁加载,前者加载耗时主要集中在300ms左右,后者则主要集中在150ms左右。
请输入图片描述


二、GameObject Instantiate/Destroy

GameObject实例化和销毁耗时同样是研发团队非常希望掌握的一个关键点。在UWA今天更新的版本中,我们将会让研发团队明确任何一个GameObject在实例化和销毁时的CPU占用情况。大家不仅可以看到最为耗时的GameObject,同时还可以看到其每次触发的时间点。

下图中的YX_DCJM_02,在游戏过程中被频繁实例化,且每次耗时均将近100ms,对此,研发团队完全可以考虑将其缓存,以避免后续0.1s的开销。

请输入图片描述
请输入图片描述


三、GameObject Active/Deactive

GameObject Active/Deactive是研发团队非常容易忽视的,大多数团队认为状态的切换开销甚微,但正是由于这些“疏忽”导致了某些GameObject的Active/Deactive切换造成了大量的CPU耗时。

下图则为游戏检测过程中,shadow的Active/Deactive的操作由于大量次数的累积,都是属于一个较高的耗时。

请输入图片描述
请输入图片描述
请输入图片描述

通过这些功能中的数据,研发团队可以从以下几点进行针对性优化

  • 针对加载频繁且耗时的资源,可以详细对其资源进行检测,查看是否有进一步优化的空间(比如纹理可检查其分辨率、格式等);
  • 研发团队明确了加载或实例化的瓶颈后,可针对具体资源、GameObject进行缓存,从而降低其CPU耗时。

四、资源管理汇总

UWA优化经验来看,二八定律同样适用于项目的开发管理,即80%的性能问题集中在20%的资源中。为此,我们将需要注意的Top10的问题直接反馈给用户(新版本中的“资源管理汇总”界面),用户通过对这些重点对象的快速处理,能在短期时间内达到立竿见影的优化效果。目前主要包括:

(1)AssetBundle的加载次数Top10
请输入图片描述

(2)资源加载的次数和耗时Top10
请输入图片描述

(3)GameObject 实例化/销毁次数和耗时Top10
请输入图片描述
请输入图片描述

(4)GameObject Active/Deactive次数和耗时Top10
请输入图片描述
请输入图片描述


五、其他更新

1. 截图功能更新

在当前版本中,我们将项目的运行截图从原来的 5秒/张 提升为 1秒/张,从而反映更详细全面的项目运行情况,助您更犀利地洞察每一个性能瓶颈,捕捉任何可以优化的机会!
请输入图片描述

2. iOS SDK 更新
在当前版本中,我们大力完善了SDK的兼容,主要包括:

  • 增加了截图功能对Metal的支持,不再限制打包项目时所选择的Graphic API
  • 增加了对使用sLua和ToLua项目的支持
  • 增加了对使用sLua,ToLua和uLua的项目的集成检测功能,用户可以一键检测SDK的集成是否成功

关于UWA

由侑虎科技开发的游戏/VR应用性能优化平台,目前提供 1)性能检测与优化 和 2)资源检测与分析 两大工具。同时,我们也会万象更新地为大家开发更省心的功能,希望通过它们可以减少开发者反复测试定位问题的时间,从而将更多的精力集中在项目开发和解决问题中,能为大家项目研发省下的任何一分一秒,都是UWA团队的骄傲。

官网:www.uwa4d.com(点击原文)
官方技术博客:blog.uwa4d.com
官方技术QQ群:465082844(非水群,仅限技术交流)



http://www.niftyadmin.cn/n/1032111.html

相关文章

给调皮的AssetBundle加上面向对象式加载调试管理

原文链接:https://blog.uwa4d.com/archives/Sparkle_AB.html 这是侑虎科技第208篇原创文章,作者陈霈霖,欢迎转发分享,未经作者授权请勿转载。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。(QQ群…

基于物理的渲染—基于球面调和基的实时全局光照明

原文链接 https://blog.uwa4d.com/archives/Study_PRT.html 在介绍本文的主要内容PRT之前,我们先介绍在游戏引擎渲染管线中常见的一个步骤 IBL。迪士尼在2012年Siggraph会议上发表的 PBR course中提到,他们在 PBR 的渲染管线中加入了 IBL(Ima…

基于物理的渲染—基于Haar小波基的实时全局光照明

原文链接:https://blog.uwa4d.com/archives/Study_Haar.html 上一期惟学无际我们给大家介绍了一篇 基于球面调和基函数(Spherical Hamonices,简称 SH )的动态全局光照明算法。它的思路是:将光线在物体间复杂的传输过程…

基于物理的渲染-用真实的环境光照亮物体

原文链接:https://blog.uwa4d.com/archives/Study_IBL.html 目前,在游戏引擎中用于照亮物体的光源非常丰富。其中,比较常用的有:平行方向光、点光源、聚光灯以及体积光等,但它们都是对真实光源的近似,并不能…

GPU Skinning 加速骨骼动画

原文链接:https://blog.uwa4d.com/archives/Sparkle_GPUSkinning.html 这是侑虎科技第222篇原创文章,感谢作者程可汗供稿提供了优化思路以及相关案例。同时,UWA根据作者提供的案例在不同的移动设备上进行测试和对比,并总结成此文&…

限时免费 | 用正确的方式,三天搞定Mono堆内存泄漏!

原文链接:https://blog.uwa4d.com/archives/MonoMemoryLeak.html 堆内存泄露可谓项目的“癌症”之一,其泄露方式多种多样,让大多数研发团队无法入手,更有不知多少项目因此而搁浅。为此,UWA今天推出了堆内存分析功能&am…

基于物理的渲染—HDR Tone Mapping

原文链接https://blog.uwa4d.com/archives/Study_HDRToneMapping.html 在游戏引擎渲染管线中,我们对于R、G、B通道颜色信息的数值范围通常设置在[0,1]之间(或者是[0,255])。其中,0代表没有光亮度,1代表显示器能够显示的…

UWA 两周年庆活动第一弹!四场技术直播领跑六月充电季!

原文链接:https://blog.uwa4d.com/archives/1827.html UWA即将迎来两周岁生日啦,为答谢所有关注者的支持,UWA两周年庆系列活动第一弹即将亮相:四场精彩技术直播领跑充电季!UWA工程师将从Unity引擎的加载、内存、渲染、…