# 小游戏适配方案性能标准
## 为什么需要性能评测标准？
性能评测标准希望能引导开发者优化相关性能数据，提升用户体验。

## 开发者需要关注哪些性能指标
从小游戏的运行周期来看，主要由启动和运行两个阶段产生性能问题。

启动阶段：启动时长，该数据将显著影响用户打开留存率
运行阶段：内存峰值、流畅度、CPU占用、网络等
其他兼容性问题，包括逻辑异常、黑屏等严重问题

## 评测标准细则

### 性能基线
机型档位

| 能力 |Android参考机型  |iOS参考机型  |
| --- | --- |--- |
| 高档 |⼩⽶10(⾼通骁⻰865) |iPhone13|
| 中档 |VIVO S7(⾼通骁⻰765G) 红米k30|iPhone11|
| 低档 |OPPO r9s(通骁⻰625) |iPhone7/8/X|


指标与测量方法

Unity小游戏的启动可参考[启动流程与时序](/minigame/dev/guide/game-engine/unity-webgl-transform/Design/Startup)
|   |定义|测量方法|
| --- | --- |--- |
| 首资源包 | 游戏首个data资源文件|位于导出目录/webgl/md5.webgl.data.unityweb.bin.txt, CDN使用gzip压缩
| WASM代码 | 游戏代码压缩包|位于导出目录/minigame/wasmcode/md5.webgl.wasm.code.unityweb.wasm.br, CDN使用gzip压缩
| 核心资源 |除首资源包外进入游戏核心玩法所需的资源量|业务自定下载，通常为AssetBundle
| callmain |引擎和首场景(Loading)初始化 |通过timelog,或日志查看“callMain耗时”
| 游戏初始化完成 |引擎和手场景完成，出现首个业务场景|通过timelog, 或日志查看“游戏启动耗时”
| 游戏可交互完成 |游戏核心场景完成|业务自定义，典型地：休闲游戏为核心玩法，RPG游戏为创角
| 内存 | 内存峰值 | 进程内存峰值，测量方法请参考[优化Unity WebGL的内存](/minigame/dev/guide/game-engine/unity-webgl-transform/Design/OptimizationMemory)
| 帧率 | 核心玩法的平均帧率 | 测量5分钟以上游戏核心玩法帧率，取平均值

### 评测工具
启动性能：
使用网络模拟工具1MB/s条件，使用Unity适配提供TimeLog窗口或运行日志获取性能数据。

运行性能: 
使用PerfDog测试，PerfDog记录性能数据并上传，取平均值，每种机型测试3组数据再取平均，内存峰值取最大值。

### 代码与资源体积
| 能力 |下载量  |
| --- | --- |
| 首包资源(gzip压缩后) |50 |>40 |>30 |

### iOS 评测标准

|  |高档机  | 中档机|低档机|
| --- | --- |--- |--- |
| 首资源包下载 |50 |>40 |>30 |
