Q&A——运行性能(一)

Unity基础知识学习五,UGUI优化相关 1.什么是UGUI优化 2.为什么要有UGUI优化 3.如何使用UGUI优化,使用UGUI优化的不同方案比较 4.源码实现 5.关键点,重要节点,疑难杂症场景 参考资料 记录最全面的ugui优化策略_bommy游戏的博客-优快云博客 对于Unity的UGUI的优化以及面试可能遇到关于UGUI的问题_头号理想的博客-优快云博客 ... 阅读详情

运行性能

Q1:如下图,我们发现WaitingForJob这个函数消耗过高导致了卡顿,请问该卡顿是否由于渲染压力过大导致?

UWA Tech Doc

UWA Tech Doc

从图中看,该线程最后是在等待 Canvas.sortjob,而这是 UI 排序造成的开销(自Unity5.2版本开始,UGUI的部分计算已经移出了主线程)。
详情参考:http://blogs.unity3d.com/2015/09/07/making-the-ui-backend-faster/
因此理论上,这是 UI 的 canvas.sortjob 在指定的时间上没有完成,从而使得渲染线程等待,且最终导致主线程进行等待而造成的开销。

运行性能

Q2:我们在查看《六龙争霸测评精讲》时,看到下图中的GC的调用,请问该数值的是取决于明式调用System.GC.Collect()这个方法吗,还是指系统自动GC的频率?

UWA Tech Doc

手动触发System.GC.Collect和系统触发GC都属于GC的调用。除iOS平台外,Unity项目的GC调用是由Mono来控制的。其主要有两种方式,一种是系统每隔一段时间调用一次,一种则是当堆内存分配过大过快时被触发。
每次GC调用均会造成一定程度上的卡顿,从而降低项目运行的流畅度。因此UWA测评中专设了GC调用详细检测,欢迎开发者上传项目测试!

UWA Tech Doc

UWA Tech Doc

运行性能

Q3:在报告中我们看到函数uwa-xxx是我们加的自定义代码段采样, 我们发现它们触发了很多GC, 是什么情况呢?
UWA Tech Doc

说明这些函数中会经常分配大量的堆内存 。GC是Mono来控制的,当Mono认为累积堆内存较高时,它就会调用GC。同时,哪个函数在分配堆内存时触发了Mono的GC,该GC调用就会被算作是哪个函数调用的。所以如果经常被特定函数来触发GC,那么从概率上来说这个函数或这个代码段分配的堆内存相当高。


运行性能

Q4:项目中勾选Static Batching和不勾选对效率有多大影响?我们在使用中发现勾选了以后包大小会增大一倍。如果不勾选,和自己在代码中调用StaticBatchingUtility.Combine的效率有多大区别?

  • 如果在Editor中进行勾选,则会在项目中生成一个较大的VBO,Runtime时通过该VBO来进行渲染,优点是有效减少了Draw Call,缺点是增大了发布游戏包的体积。
  • 如果在Runtime通过脚本来进行Batching,则相当于把拼合的时间由Editor中搬到了Runtime,所以加载时间(一般在场景加载时执行Batching)会稍有增加,但游戏包的体积将相应减少。

运行性能

Q5:如何在移动设备上,对Bloom和全屏抗锯齿进行优化?Unity标准资源里面自带的效率比较低(已经尝试过Bloom(Optimized))。

建议使用Asset Store上适合移动端的Bloom Shader插件,比如FxPro: Bloom&DOF和BloomPro等。

对于AA,目前在移动设备上并没有特别优化的方法,仅能建议在低端设备上关闭AA功能,而在高端设备上可尝试开启较低倍数(2x)的MSAA。

运行性能

Q6:我现在发现两个因素直接影响Overhead,一个是Shader的复杂度,一个是空Update方法及其同类空方法,不知道是否还有其他因素?

Overhead的计算方法是:Profiler当前帧统计的总耗时时间减去所有已知选项的累加时间,即引擎当前还无法识别模块的耗时时间。Overhead数值理论上是趋向于0的,但是由于目前市面上的硬件设备、系统框架过于丰富,所以引擎可能无法识别所有模块的CPU开销。
就我们目前遇到的大部分案例而言,Overhead数值较高一般是由硬件设备的垂直同步算法无法识别而引起的。所以,一般情况下,Overhead的数值其实并不需要开发者特别关注。
在UWA的性能分析中,我们并没有将Overhead计算在内,一方面是其本身数据的统计意义对目前大多数项目的性能优化帮助不大,另一方面是即便知道了它的CPU数值,也无法知道到底是哪些地方引起的,上层很难有针对性地进行优化。
当然,我们会持续对Overhead进行实验和研究,分析其CPU耗时规律、与已知选项的关联性等。后续有任何相关发现,我们都会总结成文,及时分享给大家。


【PCK】Camera性能与内存 Q&A Camera性能与内存 Q&A 阅读详情

相关推荐

在本地使用CPU运行Llama 2模型来实现文档Q&A

虽然LLM展现了出色的能力,但其运行所要求的计算和内存资源较高。为了应对这一问题,我们可以使用Quantization来压缩这些模型,以减少内存占用并加速推理计算过程,同时保持模型的性能和效果。Quantization是一种将用于表示数字或值的位数减少的技术。在LLM的上下文中,它涉及通过将权重存储在较低精度的数据类型中来减少模型参数的精度。由于它减小了模型大小,量化有助于在资源受限的设备上部署模型,例如仅有CPU但没有GPU的设备或嵌入式系统。

jeansboy的专栏 2766

关于Unity渲染优化,你可能遇到这些问题

https://blog.uwa4d.com/archives/QA_Rendering.html 关键字 Draw Call 半透明物体渲染 多层纹理渲染 Graphics.PresentAndSync VBO 相机后处理特效 一、Draw Call相关 Q1:移动游戏场景中,相同的怪物,Draw Call会动态合并吗?如下设置可行吗?

poem_of_sunshine的专栏 8505

亚马逊Q&A的基本知识及其玩法

1、QA不能自问自答。 提问者和回答者都有特殊条件的。QA不能自问自答。卖家只能回答客户的问题,不能提问。除非拥有多个买家号进行操作,但一定要注意IP问题,最好每个账号都绑定不同的ip,否则会被系统检测删除。可以使用亚马逊鲲鹏系统进行多账号批量注册及账号管理,这款系统可以让每个账号都绑定不同的代理ip,这样账号就伪装成来自不同地区的流量、语言!平台也就不会检测到是在一台电脑或手机上面进行多账号运营了! 2、买方账号需要购买50美元才有回答权限。 所有在亚马逊购买或访问的买家账户必须至少购买

jtyykxyo的博客 814

技术分享连载(二十八)

资源管理 Q1:在UWA性能报告中,你们建议我们选中Optimize GameObject来提升Mecanim动画模块的运行性能,但是这个功能会隐蔽角色骨骼,那么要挂载该骨骼上的这个点就无法查询了,有什么办法可以解决这个问题吗? 是的,开启Optimize GameObject默认情况下会将动画网格下的所有骨骼结点隐藏,但是,你可以通过“Extra T...

weixin_33985507的博客 166

Kaggle: Google Quest Q&A Labeling 首战银牌方法总结+心得

fesfeee

Jay_Tang的博客 1447

LangChain构建本地Q&A应用:RAG实战入门指南

RAG(检索增强生成)是当前大模型落地知识库问答的核心范式,其本质是将外部结构化/非结构化数据通过加载、切分、嵌入、检索四步注入LLM上下文,从而突破模型固有知识边界并提升回答准确性与可解释性。该技术路径兼顾效果与工程可控性,避免微调与向量数据库运维等高门槛环节,特别适合企业内部文档智能助手、技术手册问答、私有知识库等轻量级AI应用场景。本文基于LangChain框架,聚焦PDF文档处理、语义切分、本地嵌入模型(all-MiniLM-L6-v2)与小语言模型(Phi-3-mini)协同推理等关键实践,提供零

weixin_33897367的博客 307

Unity Canvas Sort Order

在unity中如果设有多个Canvas,会出现遮挡的情况。此时要通过sort Order对其进行排序,使之在game视窗中,可进行相应的操作。 eg:在一个canvas中的一个加上slider控件,然后再加上一个canvas后,run状态下,game视窗中无法拖动slider滑动条。此时将有slider的canvas对应的sort order设为1另一个canvas的sort order任为0,

qq_36083047的博客 5701

技术分享连载(七)

运行性能 Q1:如下图,我们发现WaitingForJob这个函数消耗过高导致了卡顿,请问该卡顿是否由于渲染压力过大导致? 从图中看,该线程最后是在等待 Canvas.sortjob,而这是 UI 排序造成的开销(自Unity5.2版本开始,UGUI的部分计算已经移出了主线程)。 详情参考:http://blogs.unity3d.com/2015...

weixin_34184158的博客 473

离散数学 --- 图论基础 --- 图的同构,通路与回路,可达性与最短通路

同一个图(这里的图是抽象的数学定义)可以有不同的图形表示方法1.重数:两点之间的平行边的个数1.得到 n!的过程,一个图中的一个结点在另一个图中对应的结点有n种可能(黄框中定义的图来讨论),这个对应好后下一个结点有 n - 1 种可能,再下一个有n-2种,直到最后一个为1,所有可能的结果就等于 n * (n - 1) *(n - 2)*....*1 = n!2.虽然说找对应结点很困难,但不是没有规律可循的。比如1.两个相互对应的结点的度数要相同;

qq_51947882的博客 7443

结合 Conda 手动安装 RepeatMasker

RepeatMasker 是一个广泛使用的生物信息学工具,用于识别和屏蔽(mask)基因组序列中的 重复序列(repeats) 。在使用过程中需要调用重复序列数据库(Repbase 和 Dfam),如果使用Conda安装的话会出现许多问题,因此推荐手动安装。在此记录我手动安装RepeatMasker的流程,希望对各位同学有所帮助。

m0_65437087的博客 2537

Q&A——性能

性能 Q1:在整体的性能消耗上,CPU和GPU各占一半合理吗?如果不是,各占多少为好?还是说需要根据机型来看?其次,我如何知道游戏在手机上的GPU消耗?Profiler是看不到的,有工具推荐吗? 首先,CPU和GPU是并行的,也就是CPU在运算的时候GPU也在运算,一帧的结束时间是两者中比较晚结束的那个。因此,一般我们在考虑这个问题的时候,经常会说是CPU bound还是GPU

起个名字好难啊 481

MATLAB R2022b 安装教程

1. 下载安装先放资源链接,百度网盘太贵了不想续了,换了夸克网盘。1. 下载安装。

qq_51654158的博客 2万+

IoTDB 常见问题 Q&A 第三期

关于 IoTDB 的 Q & A IoTDB Q&A 第三期持续更新!我们将定期汇总我们将定期汇总社区讨论频繁的问题,并展开进行详细回答,通过积累常见问题“小百科”,方便大家使用 IoTDB。Q1:查询最新值 & null 数据相加方法问题现象 1如果我想查 1000 个点的最新值,这些点的设备地址可能都不相同,那么我怎么查?解决方案1. from 后面可以写多个设备2. ...

qin_DB的博客 1330

统信UOS/麒麟Kylin OS下利用pyenv实现Python多版本开发环境搭建指南

本文详细介绍了在统信UOS和麒麟Kylin OS国产操作系统下使用pyenv搭建Python多版本开发环境的完整指南。从系统环境准备、pyenv定制安装到Python版本编译实战,提供了针对国产CPU架构的特殊优化方案和常见问题解决方法,帮助开发者高效管理不同Python版本需求。

sea99的博客 1054

第186篇 前馈控制——提升跟踪精度的补充手段

文章摘要: 本文介绍了前馈控制的原理及其在工程中的应用。与反馈控制不同,前馈控制通过提前预测目标值或扰动信息来生成控制量,避免误差出现后再纠正的延迟问题,适用于机器人、机械臂等高速运动场景。前馈控制通常与PID反馈配合使用,前者提供粗调,后者进行微调。文章详细讲解了前馈增益的调节方法(模型法、实验法、自适应法)及两种前馈类型(指令前馈和扰动前馈),并提供了代码示例和面试实战建议,强调前馈与反馈的协同设计是提升控制精度的关键。最后预告了下一篇将讨论串级PID控制架构。

郑伟强dev的专栏 402

Q&A——性能优化(一)

性能优化 Q1:如图,我们在UI打开或者移动到某处的时候经常会观测到CPU上的冲激,经过进一步观察发现是因为Instantiate产生了大量的GC。想请问下Instantiate是否应该产生GC呢?我们能否通过资源制作上的调整来避免这样的GC呢?如下图,因为一次性产生若干MB的GC在直观感受上还是很可观的。 准确的说这些 GC Alloc 并不是由Instantiate 直

起个名字好难啊 884

基于机器学习的电视剧类型点击量数据分析研究

1. 背景介绍 1.1 流媒体平台的兴起与电视剧市场的繁荣 近年来,随着互联网技术的飞速发展,流媒体平台如Netflix、Disney+、腾讯视频等迅速崛起,成为人们观看影视内容的主要渠道。电视剧作为流媒体平台上的重要内容类型,其点击量数据蕴含着丰富的用户偏好和市场趋势信息。

AI天才研究院 1051

MongoDB的Q&A(一)

什么是MongoDB?

haroroc的博客 138

CANoe.DiVa的应用——生成测试用例过程流程详解(一)

Diva 生成用例过程

LOVE135149的博客 7927

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IoTDB 常见问题 Q&A 第二期

关于 IoTDB 的 Q&A IoTDB Q&A 第二期来啦~我们将定期汇总社区讨论频繁的问题,并展开进行详细回答,通过积累常见问题“小百科”,方便大家使用 IoTDB。Q1:集群扩容方法问题问题1:当 IoTDB 集群的存储占用达到多少时,建议增加节点?是等到存储完全满,还是达到一半时就进行扩容?如果集群存储已满,是否需要手动进行数据清理,比如设置 TTL,还是可以直接忽略,只增...

qin_DB的博客 1980

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Q&A——UI输入(一)

UI输入 Q1:在使用NGUI时,我们通常会将很多小图打成一个大的图集,以优化内存和Draw Call。而在UGUI时代,UI所使用的Image必须是Sprite;Unity提供了SpritePacker。 它的工作流程和UGUI Atlas Paker有较大的差别。在Unity Asset中,我们压根看不到图集的存在。 问题是: 1. SpritePacker大概的工作机制是什么样的

起个名字好难啊 961

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Q&A——UI性能

UI 性能 Q1:UWA建议“将较多的动态UI元素分组放在不同的UI Panel中”,那么请问如果是ScrollView里面多个item的话,是否意味着每个Item都加一个Panel会更好一些? “动态元素”其实是相对的。在 ScrollView 中,一般情况下,如背包,其中的Item在滑动过程中是相对静止的,因此这种情况下只需要将这些Item放在一个UIPanel中即可。但在类似

起个名字好难啊 554

开源项目推荐:Laravel Q&A

开源项目推荐:Laravel Q&A 1. 项目基础介绍及主要编程语言 Laravel Q&A 是一个使用 PHP 编程语言开发的问答社区应用,基于流行的 Laravel 框架构建而成。该应用旨在为用户提供一个类似于 Stack Overflow 的平台,可以提问和回答问题,促进开发者之间的交流与合作。 主要编程语言: PHP:项目主体语言,用于后端开发。 Vue.js:用于前端...

gitblog_00159的博客 369
上一篇: Q&A——NGUI
下一篇: Q&A——物理性能
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值