# 性能优化

## 为什么需要性能优化？

游戏性能是创造良好用户体验的基本要素，新进活跃、留存、支付、在线时长等运营数据背后的核心点是在于用户的体验，游戏性能是最能影响用户体验的因素之一。当用户进入小游戏时，良好的启动性能可以减少用户初次进入的等待时间，让用户更快的看到游戏画面和更早地与游戏发生交互行为，能较大程度提升用户的留存率；良好的运行性能可以为用户提供一个绝佳的游戏体验环境，获得愉悦的游戏体验。

### 性能关乎用户新进转化

启动性能关乎到小游戏的用户能不能真正进入到游戏，如果游戏启动没有优化好，就需要很久才能看到游戏的画面。很有可能很多玩家在没有等到游戏加载完就已经产生了流失。

根据小游戏整体启动留存率分析，小游戏玩家的首屏打开留存率约为75%。这是什么意思呢，就是玩家从点击小游戏到能看到首屏渲染界面，大约有25%的玩家流失。

玩家打开小游戏典型的过程如下图所示:
![](https://res8.wxqcloud.qq.com.cn/wxdoc/c4a8a2ad-098c-4328-9532-162c9003ed69.png)
  * 图1. 玩家通过不同的进入场景发现并打开小游戏 
  * 图2. 启动加载，代码包首包加载、代码注入、初始逻辑等 
  * 图3. 游戏业务更多资源加载，比如定制游戏Loading动画，CDN资源加载等 
  * 图4. 小游戏玩家可交互阶段我们发现，许多小游戏在此过程中存在耗时过长，黑屏等启动性能问题。 
那么，玩家到底是在什么时候离开我们小游戏的呢？ 

![](https://res8.wxqcloud.qq.com.cn/wxdoc/2daeaf74-2c48-4365-a8a5-43d716294843.png)

根据[小游戏数据助手](/minigame/analysis/assistant.md)应用中的“数据-性能分析”中的代码包加载阶段流失时间分布显示，如果能把时间缩短到4秒内，可以减少大约40%玩家的流失。

### 性能关乎用户持续留存

有些游戏玩法非常有趣，品质也很高，但是玩了几分钟后手机就变得滚烫。还有一些游戏画面很精美，却因为内存占用过大而出现闪退，这些性能问题是足以让玩家流失的，即使再有趣的玩法也能难留住玩家。

![](https://res8.wxqcloud.qq.com.cn/wxdoc/54412c98-0e72-4c41-bae7-3f55e36dcf57.jpeg)

根据[小游戏数据助手](/minigame/analysis/assistant.md)应用中的“数据-性能分析”中的内存异常退出分析，我们发现小游戏由于内存问题而退出的占比约为2%，对于重度游戏而言，这个数字可能会达到5%~8%左右。

## 应该如何提升小游戏性能？

游戏性能是一个很复杂的话题。从产生原因来看，既会受到诸如包体大小、游戏逻辑、后端服务稳定等因素影响，同时也受到玩家网络环境、机型设备等开发者无法控制的因素影响，所以，针对于游戏性能的优化，我们需要从游戏的研发流程上来进行拆分，寻找相关的解决方案。

对于一个常见的小游戏，其研发流程大致如下图所示：
![](https://res8.wxqcloud.qq.com.cn/wxdoc/45e3d0d5-7a5c-4573-8c10-4ae4c00f8d93.png)

我们接下来会针对于每一个研发流程步骤，探讨一下开发者应该如何应用平台所提供的工具，结合开发者自身的优化经验，对游戏进行性能排查和优化。

### 技术调研

“好的开始，是成功的一半”，进行游戏研发之前，我们通常需要针对于游戏特点、平台特性来选择合适的技术方案，除了常规的游戏引擎等方案的确定外，开发者也需要将游戏的运行时（即小游戏平台）作为选型的参考因素，针对于游戏的运行时平台来考虑当前的技术方案和工具是否合适，选择更具扩展性和灵活性的技术方案和相关工具。

对于平台需要考虑的因素，我们对大盘数据进行了整合分析，发布了[技术手册-设备兼容篇](perf-technical-manual)，从设备硬件、平台特性兼容、网络三大模块，提供多种维度的数据参考，为开发者提供更多技术选型的决策信息。

### 性能调优

游戏性能的提升不仅仅需要依赖于平台能力的不断优化，更依赖于开发者的精益求精，在开发阶段对代码质量、资源管理等方面进行精雕细琢。
“工欲善其事，必先利其器”，有效利用平台已有的调优工具，能更快、更精准地发现游戏存在的性能问题，同时能更便捷地获取相关的优化手段，以下是平台提供的调优工具：

- [性能评测工具](perf-audit/perf-audit-tool) — 用于分析、提升小游戏性能的自动化检测工具，协助开发者更精确地定位问题并提供优化建议。
- [云测试工具](perf-tools-cloudtest) — 为开发者提供的一套完整易用的在线测试服务，以帮助开发者更高效、更全面地进行自动化游戏性能测试、兼容性测试。
- 最佳实践 — 游戏优化相关的最佳实践指南
  * [启动优化指南](perf-action-start2)
  * [运行优化指南](perf-action-runtime-overview)
- [真机性能面板](perf-action-device-monitor) - 调试阶段，为开发者提供游戏性能数据的实时监控。

### 性能监控

除了在研发阶段完成性能调优的必要工作外，在游戏发布上线后，还需要对线上真实运行数据的进行监控、异常告警，同时关注玩家的反馈。平台目前主要提供了如下的工具，帮助开发者掌握和了解游戏线上的运行状况：

- [性能监控](perf-audit/perf-system-overview) — 为开发者提供一个较为全面的性能数据监控系统，帮助开发者快速了解游戏整体的性能情况、获取游戏优化指引和设定异常指标监控。
- [评测标准](perf-mesure) — 开发者的性能反馈和调优的参考标准。
- [数据助手](/minigame/analysis/assistant.md) - 为开发者提供多维度、多指标的线上用户真实运行数据。
- 玩家反馈 — 通过[LogManager.log](/minigame/dev/api/base/debug/LogManager.log.md)记录游戏关键路径信息，当玩家发生异常时，引导其反馈相关异常。

如果您想进一步了解性能以及提高小游戏体验的方式，请浏览我们的性能文档，获取有关各类主题的指南。我们会不断添加新指南并更新现有指南，请持续关注！
