news 2026/2/11 17:22:54

面经-CPU、内存、GPU的性能优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面经-CPU、内存、GPU的性能优化

一、如何定位问题

Profiler/Frame Debugger 之类工具确认瓶颈。

  • CPU bound:Profiler 里 Main Thread/Render Thread 很高,GPU 还很空;或降低分辨率没提升 FPS

  • GPU bound:GPU time 高;降低分辨率/关闭后处理 FPS 明显提升

  • 内存/GC bound:卡顿呈“尖刺”,GC.Alloc 很多,周期性 GC spike,或内存持续增长导致加载/换场抖动

二、 CPU 优化(主线程、脚本、物理、动画、渲染提交)

A. 脚本 Update/逻辑过多

  • 把“每帧轮询”改成事件驱动(状态变化才更新 UI/逻辑)

  • 降频:InvokeRepeating/自定义 tick(比如 10Hz/5Hz)替代每帧计算

  • 缓存引用:避免每帧GetComponent/Find(只在初始化取一次)

  • 避免 LINQ/闭包/foreach 装箱等隐式分配(也会牵扯 GC)

B. 物理开销(Physics)

  • 减少Physics.Raycast数量(合批检测、分层检测、降频)

  • 合理 Layer 碰撞矩阵,减少无意义碰撞对

  • Rigidbody 数量/碰撞体复杂度控制;尽量用简单 Collider

  • FixedUpdate 频率不要过高(默认 50Hz,必要时调低并保持稳定)

C. 动画/IK

  • Animator 层数、BlendTree 复杂度、IK/约束数量控制

  • 远处角色降低动画更新频率 / 关闭 IK

  • 共享 AnimatorController、减少 Animator 组件数量

D. 渲染提交(CPU 侧)

  • DrawCall 太多:SRP Batcher、GPU Instancing、合批、静态批处理

  • UI Canvas:避免整个 Canvas 每帧重建,拆分静态/动态 Canvas,少改 Layout

  • 大量 SetPass/材质切换:合材质、合贴图(图集)、减少 shader variant

三、 内存优化(峰值、常驻、加载、GC)

内存优化在 Unity 常见两类:减少分配 + 控制资源常驻/峰值

A. 减少 GC(卡顿尖刺的主要来源)

  • 避免每帧分配:字符串拼接、new、LINQ、频繁Instantiate临时对象

  • 对象池:子弹、特效、UI item、怪物等(并配合预热)

  • 复用容器:List/Dictionary 清理用Clear(),避免反复 new

  • UI 文本更新:减少频繁 SetText/字符串格式化(尤其移动端)

B. 控制资源内存(贴图/网格/音频)

  • 贴图压缩格式正确(ASTC/ETC2/BCn 视平台),mipmap、分辨率分级

  • Mesh/SkinnedMesh:骨骼数量、网格面数、Blendshape 控制

  • 音频:长音频用 streaming,短音效压缩/内存加载策略区分

C. 资源加载与峰值(Addressables/AssetBundle)

  • 异步加载,避免主线程阻塞(尤其切场景)

  • 资源分组、依赖分析,避免“一加载加载一堆”

  • 正确释放:Addressables.Release、卸载不用的 bundle、场景切换后清理

  • 关注“峰值内存”:加载新场景时旧场景资源未释放会导致瞬时爆内存

四、GPU 优化(像素、顶点、带宽、过度绘制)

GPU 优化核心是:少画、画得更便宜、减少带宽/状态切换

A. 像素成本(Fillrate)与过度绘制

  • 降低分辨率/动态分辨率(最直接验证 GPU bound)

  • 减少全屏后处理(Bloom、SSAO、DoF、TAA 等)

  • UI/透明物体过多会 Overdraw:减少透明层级、能用不透明就不用透明

  • 合理裁剪:UI Mask/ScrollRect 也会增加开销

B. Shader & 材质

  • Shader 复杂度:减少计算、纹理采样数、分支

  • 减少 shader variant:剔除不用关键字,避免爆炸式编译与运行时切换

  • 使用 SRP Batcher(URP/HDRP),减少 CPU+GPU 的状态成本

C. 几何(顶点)与阴影

  • LOD、Impostor、合并远景

  • 阴影:降低 shadow distance、分辨率、cascade 数,减少投射/接收对象

  • 粒子:控制数量、启用 GPU Instancing(支持时)

D. 带宽(移动端尤其重要)

  • 贴图压缩、减少 RT 数量/分辨率(后处理链路)

  • 避免频繁读写大 RenderTexture

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/9 22:46:34

揭秘AI论文写作内幕:7个隐藏技巧与神器,轻松搞定毕业论文

一、90%学生不知道的论文写作“潜规则”:你还在熬夜踩坑吗? 你是否经历过这些绝望时刻? 对着空白文档发呆3小时,选题还停留在“如何确定选题”阶段;花一周设计问卷,却因样本量不足被导师打回;…

作者头像 李华
网站建设 2026/2/9 18:22:43

Thinkphp的学生公寓宿舍管理系统

目录摘要项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要 ThinkPHP学生公寓宿舍管理系统是一款基于PHP框架开发的高效、安全、便捷的宿舍管理平台,旨在优化高校或寄宿制学校的学生住宿管理流程。系统采用B/S架构,结合M…

作者头像 李华
网站建设 2026/2/11 3:31:30

Thinkphp的影视资源在线观看管理系统设计与实现

目录 摘要 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 摘要 该系统基于ThinkPHP框架开发,旨在构建一个高效、安全的影视资源在线观看管理平台。系统采用B/S架构,结合MySQL数据库,实现用户管理、影视资源分…

作者头像 李华
网站建设 2026/2/9 6:06:07

【大模型训练】Efficient MoE Pre-training at Scale on 1K AMD GPUs with TorchTitan

https://pytorch.org/blog/efficient-moe-pre-training-at-scale-with-torchtitan/ 高效训练像 DeepSeek-V3 和 Llama 4-Scout 这样的大规模混合专家模型(MoE)是现代人工智能面临的挑战之一。这些模型将 GPU、网络和编译器的性能推向了极限。为了应对这…

作者头像 李华
网站建设 2026/2/11 17:12:40

【毕业设计】基于python-CNN深度学习的食物识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华