1096 words
5 minutes
发布前优化

为什么发布前还要单独做一轮优化#

开发中做过很多局部优化,不等于发布前已经达标。真正临近上线时,需要把“局部问题”收敛成“版本是否可交付”的结果:帧率稳不稳、内存会不会爆、包体是否超线、发热和耗电能否接受。

【重点】发布前优化不是再做一次大而全的技术研究,而是把版本风险按优先级收口,优先清掉会影响上线和回归的硬问题。

先固定验收条件#

发布前测试最怕“每次条件都不一样”,所以第一步不是调代码,而是锁定基准:

  • 设备矩阵:至少覆盖低中高档目标机型
  • 测试场景:主城、战斗、加载、长时间挂机、切后台恢复等高风险路径
  • 画质档位:和实际上线配置一致
  • 构建方式:尽量接近 Release,只保留必要的分析开关

发布前性能检查清单#

1. 帧率与帧时间#

  • 是否稳定达到目标帧率
  • 峰值帧时间是否集中在少数可解释场景
  • CPU 或 GPU 谁是主要瓶颈,是否有明显 GC、加载、Shader 编译尖刺

2. 内存与资源峰值#

  • 常驻内存是否在设备安全线内
  • 关卡切换、长时间游玩后是否只增不降
  • 纹理、Mesh、音频、托管堆是否有异常峰值
  • 首次进入核心场景时是否发生大批资源同步加载

3. 包体与首包资源#

  • 是否有明显可剔除的冗余资源、重复贴图、未引用 Shader 变体
  • 首包是否过大,首次下载和安装体验是否可接受
  • 热更新或分包策略是否和当前资源组织一致

4. 发热与耗电#

  • 连续游玩 10 到 30 分钟后帧率是否下降
  • 设备是否出现明显发烫、降频、续航异常
  • 高画质档是否应该限制在特定机型开放

5. 加载与切场景体验#

  • 首次加载、回主城、战斗前后、切后台恢复是否存在黑屏或长卡顿
  • 是否有资源预热遗漏,导致首次特效或首次 UI 打开抖一下

一条可执行的回归流程#

第一步:建立基线#

先在候选版本上跑一遍关键路径,记录每台设备的帧率、帧时间、内存峰值、温度变化和包体大小。没有基线,后续就只有“感觉”。

第二步:只修高优先级问题#

优先处理:

  • 稳定复现的卡顿尖刺
  • 会导致降频、闪退、内存告警的问题
  • 关键路径中的 GPU 或 CPU 大头

发布前阶段通常不适合做结构性大改,除非当前问题已经影响上线。

第三步:同条件复测#

优化完成后,必须在同设备、同路径、同画质下复测。否则前后数据没有可比性。

第四步:形成验收结论#

最后输出的不是“我们做了很多优化”,而是:

  • 哪些指标已经达标
  • 哪些风险仍存在但可接受
  • 哪些机型需要降档或限制特效

我会重点看的几个风险点#

  • Editor 数据很好看,但真机发热后 15 分钟开始掉帧
  • 峰值内存只在某个切场景瞬间爆掉,平时很难注意到
  • 包体优化只看总大小,没有检查首包和首次加载体验
  • 为了最后冲性能做了高风险改动,结果引入回归 Bug

【注意】发布前优化的目标不是“指标无限漂亮”,而是版本稳定、风险可控、回归成本能接受。

简化版验收模板#

  • 帧率:目标帧率 / 1% low / 关键场景峰值帧时间
  • 内存:冷启动、热启动、长玩 30 分钟、切场景峰值
  • 温度:10 分钟、20 分钟、30 分钟机身温度与是否降频
  • 包体:安装包、首包、热更新首日下载量
  • 结论:通过 / 降档后通过 / 延后发布

【技巧】如果时间只够做一件事,优先把“真实设备上的关键路径基线”补齐。这比零散修几个小问题更能降低上线风险。

发布前优化
https://fuwari.vercel.app/posts/performance/pre-release-optimization/
Author
Qingswe
Published at
2025-02-28
License
CC BY-NC-SA 4.0