抛砖引例

有别于之前家喻户晓的畅销大作,这次我们拿一个普通小清晰RPG游戏作为案例。在我们测试过的大量项目中,该游戏是少见的,以UI性能上位的。虽然这仅仅是第一次测试的数据,但是其在CPU耗时、堆内存分配上的表现都是甚如人意,瑕不掩瑜。

在UWA的报告中打开UI模块性能界面,大家就能看到如上图UI相关的详细参数。包括:CPU峰值、CPU均值、堆内存分配总值、堆内存分配均值。这里的CPU峰值取自以下4个UI函数的耗时总和。堆内存分配总值指测试过程中,这4个UI性能函数分配的堆内存之和。

UICamera.Update()
该函数通常在点击时出现开销。因此,当该函数的CPU开销较高时,通常都是因为调用了其他的较为耗时的函数引起。

UIRect.Update()
该函数通常在需要更新锚点位置时出现开销。因此,当该函数的CPU开销持续较高时,通常是因为当前场景中有较多的UI元素绑定了OnUpdate模式的锚点。

UIPanel.LateUpdate()
该函数为NGUI最主要的CPU开销,包含了对所有UI界面包括其下UI元素的状态更新、网格重建、DrawCall合并等操作。大量的UI变动或者不合理的UIPanel布局都有可能导致该函数出现较高的峰值。

UIRect.Start()
该函数主要涉及到UI元素的初始化操作,通常在UI界面被实例化时出现并产生一定的CPU开销。

报告往下看,是各个函数的具体CPU和堆内存开销。如果你对这些数据代表的数字是一脸懵逼的状态,不清楚是偏高了还是偏低了,请先打开右边的分析与建议。
如下图,红框内分别给出了四个函数的CPU占用详情,包括主体范围是多少,过高或过低。一般来说,我们建议堆内存总值控制在30MB内,如果可以,尽量再往20MB的极限靠靠。

在此,我们不妨点击某一帧,在底部查看该帧的CPU耗时。


上图中显示,在第5500帧时CPU的耗时为5.4ms,若要溯本求源,我们可以再去CPU耗时详情中定位是哪个函数引起的CPU开销。

如上图,我们看到这些耗时分别为:
UICamera.Update(): 1.2 ms
UIRect.Update(): 0.2 ms
UIPanel.LateUpdate(): 4.0 ms
UIRect.Start(): 0.0 ms (由于四舍五入)

通过这些具体的性能函数,以及这些函数的意义我们就可以大致做一个判断了。接下来就需要各位程序大大结合自己的UI设计具体问题具体分析了。由于此文的目的是为了帮助大家理解UWA性能优化报告,因而并不会大篇幅讲解NGUI性能优化的细则,下文先给一些比较通用的建议,可谓优化中的黄金法则!


优化支招

1、 尽可能将静态UI元素和频繁变化的动态UI元素分开,存放于不同的Panel下。同时,对于不同频率的动态元素也建议存放于不同的Panel中。

2、对于UI元素,OnEnable和OnDisable都会进行较多的操作,因此即使不涉及到资源的加载,依然会有较大的CPU开销,因此,对于切换非常频繁的UI界面,我们建议更高效的做法是:
(1)改变UI的位置(以UIPanel为单位)来实现UI的隐藏和显示,因为是位置移动,所以并不产生多余的CPU消耗,同时又可以节省Enable和Disable的CPU开销。
(2) 通过设置相机的Culling mask 来实现 UI 界面的隐藏和显示,同样避免Enable/Disable操作。该做法可能会一定程度地提高内存的开销(UIDrawCall中存储的Mesh),因此可以根据UI切换的频率来决定是否要进行优化。

3、UI资源进行详细检测,查看其分辨率、格式等是否足够精简和优化。

今天的分享就到这里,下一期我们会继续讲解UWA测评报告中的内存模块,感谢各位开发者的关注。

如何读懂UWA性能报告?—NGUI篇相关推荐

  1. 读懂 JVM 内存管理这篇就够了

    读懂 JVM 内存管理这篇就够了 JVM 的内存结构 程序计数器 作用 概述 PC寄存器的常见问题 虚拟机栈 栈中可能出现的异常 栈的存储单位 栈运行原理 栈帧的内部结构 局部变量表 槽 Slot 操 ...

  2. 嘉益仕(Litns)带您读懂MES系统:选型篇

    自从智能制造概念提出以来,制造执行系统MES在国内掀起了新一波的热潮.众多企业在技术发展.政策导向和自身需要的推动下,纷纷上马MES请添加链接描述项目. 由此也带动了MES软件开发企业的快速发展.一夜 ...

  3. multipartfile 后端怎么接受_精华 | 前端必看,一文教你读懂芯片后端报告!

    来源:知乎 作者:重走此间路 首先,我要强调,我不是做后端的,但是工作中经常遇到和做市场和芯片同事讨论PPA.这时,后端会拿出这样一个表格: 上图是一个A53的后端实现结果,节点是TSMC16FFLL ...

  4. 读懂大数据,这篇文章一定要细细品读!

    似乎一夜之间,大数据(Big Data)变成一个IT行业中最时髦的词汇. 首先,大数据不是什么完完全全的新生事物,Google的搜索服务就是一个典型的大数据运用,根据客户的需求,Google实时从全球 ...

  5. 读懂Adaptive Autosar架构-入门篇

    虽然现在绝大多数的量产车主要还是一个代步工具以满足我们的出行需求,而与我们的信息娱乐生活所分离,在未来汽车将与我们的日常息息相关.想要达到这一目标汽车E/E架构和软件架构将会有巨大的革新.本文的前部分 ...

  6. 原创 | 一文读懂机器学习中的shapley值方法

    作者:贾恩东本文约2000字,建议阅读9分钟本文为你介绍更公平分配利益权重的一种算法--Shapley值方法. 本篇文章是数据派一文读懂系列的新年第一篇原创,在这里祝贺大家新年学业有新成就,生活有新气 ...

  7. 第四十六章 使用 ^SystemPerformance 监视性能 - 生成 ^SystemPerformance 性能报告

    文章目录 第四十六章 使用 ^SystemPerformance 监视性能 - 生成 ^SystemPerformance 性能报告 生成 `^SystemPerformance` 性能报告 使用任务 ...

  8. 2021中国开源年报发布!一篇报告带你读懂中国开源的2021~

    来源|开源社KAIYUANSHE 责编 | 李明康 开源,在2021年,火了,而且是燎原烈火,烧的焮天铄地,可以说是中国开源迅猛发展的元年也不为过.我们看到,在开源领域上,国策的重点扶持.资本的加码青 ...

  9. 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

    更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,共同探讨软件知识经验,关注就有海量学习资料免费领哦: 目录 0背景 1.手机USB接口通信特点 1.1 使用方便 1.2 通用性强 1.3 ...

最新文章

  1. 神经网络 online problem class反馈
  2. Android_2.2_eclips_Bundle简单传参demo
  3. Java利用Jakson实现序列化与反序列化操作
  4. 相邻兄弟选择器(+)、子选择器()、兄弟选择器(~)等用法
  5. SAP UI5 System Test 的工具之一:uiveri5
  6. (11)System Verilog对象复制
  7. django filter查询多选_django model filter查询
  8. ISAKMP主模式分析二
  9. php类的实例化方法吗,php实例化一个类的具体方法
  10. b站视频解析php,b站视频解析【调解流程】
  11. USBclean for Mac(U盘病毒查杀工具)
  12. 工业通讯总线RS485和RS232
  13. 暖身驱寒的三种瑜伽呼吸法
  14. 山东理工acm 3926 bLue的二叉树
  15. 动态代理ip的测试步骤有哪些?
  16. 是时候卸载这些全身都是广告的浏览器了:360、UC、QQ
  17. python标准库os.path中用来_Python标准库os.path中用来判断指定文件是否存在的方法是_____________。...
  18. GPT-3、Stable Diffusion一起助攻,让模型听懂甲方修图需求
  19. html5如何设置视频为静音,html5中设置或返回音频/视频是否应该被静音的属性muted-...
  20. 韩创变色镜片和普通镜片哪个更好用

热门文章

  1. php e all e notic,error_reporting(E_ALL ^ E_NOTICE)详细说明 | 慢生活的记忆
  2. mysql查询每个表的描述_MS SQL SERVER 读取数据库中每个表的描述/注释以及表中字段/列的字段名,字段类型,字段描述/注释/说明等信息...
  3. 获取rabbitmq连接对象_RabbitMQ——简单队列
  4. python jdbc_javapython连接mysql快速造数
  5. fcm模糊聚类matlab实例_一文学会使用MATLAB将仿真、试验数据可视化附带源程序
  6. Ran out of input
  7. python写货币转换_如何在Python中将货币字符串转换为浮点数?
  8. maxwell中文汉化补丁_《我的世界:地下城》中文剧情流程攻略 通关视频流程
  9. 同一个类 cannot be cast to_2021年动漫类年历推荐
  10. 机器人锤石下路组合_下周二,极智嘉研发总监讲解物流机器人视觉感知与定位关键技术...