vampire-like/docs/P1.5 Simulation-Supplement.md

53 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# P1.5 Simulation 收尾说明P2 输入基线)
## 测试设备与环境
- 设备iQOO Neo8
- CPU第一代骁龙 8+ 八核
- 内存12 GB
- 系统OriginOS 6Android 16
- Unity Profiler 口径:以 CPU `ms` 为主,`fps` 仅作辅助Android 端 60 fps 上限)
- Profiler 配置:`Call Stacks = Off`(开启会额外放大 CPU 开销,不纳入本次基线)
## CPU 分阶段数据P1.5
| 怪物数量 | 帧率 | MoveSeperation 占比 | BuildInput 占比 | WriteBack 占比 | StateUpdate 占比 |
|--------|---------------------|--------------------|------------------|------------------|------------------|
| `500` | `60 fps (16.56 ms)` | `25.8% (4.28 ms)` | `1.2% (0.20 ms)` | `1.0% (0.17 ms)` | `0.7% (0.12 ms)` |
| `1000` | `44 fps (22.77 ms)` | `38.9% (8.86 ms)` | `1.8% (0.41 ms)` | `1.5% (0.36 ms)` | `1.0% (0.23 ms)` |
| `1500` | `33 fps (29.83 ms)` | `46.7% (13.95 ms)` | `2.0% (0.61 ms)` | `1.7% (0.51 ms)` | `1.1% (0.35 ms)` |
| `2000` | `19 fps (53.04 ms)` | `43.1% (19.53 ms)` | `2.1% (0.97 ms)` | `1.5% (0.69 ms)` | `1.0% (0.49 ms)` |
## Memory 对比P1 -> P1.5
| 怪物数量 | GC Used Memory | GC Allocated In Frame | TickEnemies GC |
|--------|------------------|-----------------------|-----------------|
| `500` | `7.8 -> 7.9 MB` | `29.5 -> 2.1 KB` | `27.4 -> 0 KB` |
| `1000` | `8.8 -> 8.8 MB` | `56.6 -> 2.1 KB` | `54.5 -> 0 KB` |
| `1500` | `10.0 -> 9.0 MB` | `84.2 -> 2.1 KB` | `82.1 -> 0 KB` |
| `2000` | `11.8 -> 9.9 MB` | `109.7 -> 2.1 KB` | `107.6 -> 0 KB` |
## CPU 热路径对比P1 -> P1.5
说明P1.5 的 `TickEnemies` 以四阶段总和近似对齐 P1 的 `TickEnemies ms`
| 怪物数量 | P1 TickEnemies | P1.5 四阶段合计 | 降幅 |
|--------|----------------|------------|----------|
| `500` | `6.18 ms` | `4.77 ms` | `-22.8%` |
| `1000` | `12.80 ms` | `9.86 ms` | `-23.0%` |
| `1500` | `20.11 ms` | `15.42 ms` | `-23.3%` |
| `2000` | `29.62 ms` | `21.68 ms` | `-26.8%` |
## 结论Checkpoint 6
- GC 目标达成:`TickEnemies GC` 在 `500~2000` 敌人数下均为 `0 KB`,满足 `< 5 KB/frame` 目标。
- CPU 阶段可观测性达成:`BuildInput -> Move/Separation -> StateUpdate -> WriteBack` 已可稳定采样。
- 当前主瓶颈明确:`MoveSeperation` 是绝对热点(约 `43%~47%` 帧占比P2 优先并行化该阶段。
- 评估口径可复现Android 端受 `60 fps` 上限影响,性能判断以 CPU `ms` 为准。
## 路线收敛说明
- `SimulationWorld.Tick(...)` 已收敛为战斗内唯一仿真执行入口。
- `UseSimulationMovement` 不再承担运行时双路径路由职责,不应再作为回滚到旧 `MovementComponent` 路径的开关理解。
- 敌人、投射物与目标查询的运行时行为统一以 `SimulationWorld` 主容器和 Burst Job 管线为准。
- 验证建议:聚焦单一路径下的敌人移动、投射物生命周期、最近敌查询和 area hit 结果,而不是做旧路径 A/B 对照。
## P2 交接建议
- Job/Burst 第一优先级:`MoveSeperation` 阶段并行化。
- 保持阶段边界不变:继续维持四阶段管线与 `ProfilerMarker`,避免失去对比口径。
- 保持生命周期/索引规则不变:`EntitySync` 与 swap-back/remap 继续作为硬约束。