Files
MapLibreParticleLab/docs/报告/STEP-119_粒子独占C与CPU效率_阶段验收_v1.md
tei 32ac795fc4
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
test: benchmark particle-only C FastPath CPU across R layouts
2026-10-11 18:02:33 +09:00

52 lines
5.8 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.
# STEP-119 粒子独占 C 与 CPU 效率阶段验收报告 v1
日期:2026-10-11(JST)。阶段结果:**SOURCE_READY / CPU_BENCH_READY / ANDROID_NEW_APK_NOT_RUN / STEP119_PARTIAL**。
## 一、可行性结论
用户确认 RCRR 的正常使用原则是 C 只放粒子,后续必须以实际 CPU 效率衡量 FastPath 而非单看 Fast 计数。源码检查确认:Native `tryRenderParticleFastFrame()` 使用 `singleContinuousSegment(plan)`;Fast 执行仅访问当前唯一 C 段的 LayerGroup,R 需全部缓存有效、无版本/内容/Placement/Annotation 等 24 Gate 安全问题。原则**有条件可行**,不等于 WeatherColor 放入 R 后已经获得 Fast 资格。
**没有取得新 APK 的 Full/Fast CPU 性能对比数值**;本报告仅完成测试场景、测量器与验收准备。不能宣称 CPU 性能提升、GTest 或 iOS 完成。
## 二、实际基线和执行状态
- 设备 Mac.lan,通过 RDC 操作 `/Users/tei/dev/MapLibreParticleLab`;原有 `particle/main` 分支,起点 `1072816740fa69b7b23cd70602a402be19e5be2a`。
- Integration `/Users/tei/dev/navsea-particle-integration` 已 `fetch main`、`merge --ff-only origin/main`,本地/远端一致 `80667d6c343411d03a760425438e3d292f452118`。已依据当前规则确认 Android/iOS/Shared Core 边界及项目 AGENTS。
- 既有设备 APK 源 commit `3d989a00a822989339a6d7cb4d23acc04396670e`、SHA-256 `57d68800770d431a2ce9247406f636e7a01cc19fccaf4c59f5eb3a7c99128135`;**未重新编译或安装,不得对新场景使用旧 APK 验收**。
- 之前的原 `PARTIAL_RCRR` 80秒真机负例保留:R0 因缺 tide Build=0/Reuse=0、R2/R3 各 Build=1/Reuse=536、FastDelta=0/FullDelta=596、decisionMismatch=0。旧 `STATIC_RC_NO_TIDE` 正向 Fast=1819,数据/图层顺序不同,不当作新 CPU 对照数据。
## 三、新 Test App 结构
不改生产 PBF、原 63 层场景或 Shared Core 的 24 Gate。Test App 在唯一无 tide 测试副本中得到 62 个基础层,插入的 WeatherColor 索引31、Particle 索引32。正常性能候选只允许 Particle C[32,33):
- `RCRR_C_NARROW_NO_TIDE`:R[0,32)、C[32,33)、R[33,63)、R[63,64)。
- `RCR_PARTICLE_ONLY_NO_TIDE`:R[0,32)、C[32,33)、R[33,64)。
- `RCRRR_PARTICLE_ONLY_NO_TIDE`:R[0,32)、C[32,33)、R[33,38)、R[38,63)、R[63,64)。
- `RCRR_FULL_CONTROL_NO_TIDE`:与第一组同源、同图层、同 RCRR Plan,但调用 `setRetainedUnderlayEnabled(false)`,目的是同屏 Full CPU 基线;预期原生 Fast=0,实际须设备证明。
老 `RCRR_C_WIDE_NO_TIDE`、`RCRR_R_DYNAMIC_NO_TIDE` 仍保留为错误划分安全负对照,不列为正常性能候选。原 `PARTIAL_RCRR` 和 `STATIC_RC` 及 v1 报告均保留历史事实。
Test App 菜单的操作 ID 从10/11/12迁移到100/101/102,避免新增 enum 场景 10/11 与 Snapshot、Mutate 冲突;Full 对照按钮显示 CACHE OFF。Native 摘要新增 `sampleElapsedMs` 与 benchmark 档 6 秒报告周期,仅用于关联 CPU 采样,不修改 Gate 或 Render 路径。
## 四、CPU 真实测量方案
新增 `tools/particle_android_validation/benchmark_step119_cpu.py`:在用户提供相同源码构建并正确安装的 APK 上,调用既有严格 `inspect()` 锁 commit、SHA、ABI/安装设备;启动目标 Activity,Warmup35秒,稳定观察90秒,按6秒读取 Android `/proc/PID/stat` 的 utime+stime 和 `/proc/uptime`。设备访问能力已只读检查:真实 `CLK_TCK=100`,`/proc/<PID>/stat` 可读取,但**CPU Benchmark 本身尚未对新 APK 运行**。
输出 `CPU Core Seconds`、`CPU Core Equivalent`(CPU%相对单核)、`Native FPS`、Fast/Full增量、FastFraction、估算 `CPU ms/完成帧` 和分段 Build/Reuse/Invalidation。CPU 为**整个 App 进程**的时间,并非 C++ renderer 独占的精准逐帧计时。Fast 稳定区间要求 FastFraction≥95%,Full 对照要求 Full>0、Fast=0,且 24 Gate mismatch=0;失败按原始事实保存 JSON 并返回非零。
新增 `tools/particle_android_validation/compare_step119_cpu.py`:读取 Full→Fast→Full A-B-A 实际结果与 RCR/RCRRR 结果,校验同设备/APK SHA/Style 指纹、场景生命周期和 CPU/Native 边界,将 Full 两轮作为 CPU/帧基线,计算各 Fast 组 CPU/帧变化比例及 CPU/秒和 FPS。若 Full 两端 CPU/秒漂移大于15%,结果标记需复测。此比较用于检验 CPU FastPath 收益,**不代表 GPU 时间、能耗或省电已经证明**;FPS 不同时必须同时呈报 CPU每秒与CPU每帧。
## 五、当前已执行验证与未执行项
- Python 非 Jest 结构/CPU 算法测试:12 项 PASS,运行退出码 0;涵盖4类有效性能结构与2类保守负例、错误分段/缺源/Annotation失败、原 STATIC_RC / 原 PBF63 边界、proc/stat解析与 CPU/fps 归一计算。
- CPU 工具 CLI 参数校验/AST:PASS;Android ADB 读设备时钟率:`100`(只读)。
- `git diff --check`:本阶段代码检查通过,最终 commit/push 信息以后续 RDC 实际状态补充。
- 新 Kotlin Test App 尚未经用户手工 Gradle 编译/打包;四种 CPU 场景 Native 真实 Full/Fast、CPU时间、帧率与图像仍为 **NOT VERIFIED**。
- Source/Style/Tile/Camera/Annotation 等失效及恢复、13项 STEP119 Native GTest、Metal/iOS 独立验证均未完成。Mac libuv 既有缺失不擅自装依赖/升级系统工具。
## 六、工程风险与下一步
只有在 C[32,33) 实际得到 Fast、视觉匹配及 CPU/帧或 CPU/秒的受控改善后,才考虑产品采用。多 R 可能提高 FBO/Composite 成本;WeatherColor 放 R 可能因当前 Core 类型/动态数据结果证书被保守拒绝;如果 Main CPU 指标改善但持续功耗/热度上升,也不等于总体有益。
详见 `docs/60_测试/STEP-119_RCRR多配置验收矩阵_v2.md`。本报告是阶段验收,不进入发行、不创建 Tag/SOURCE_LOCK,也不覆盖上轮或未跟踪的 STEP110/111。Git 以 RDC 实际新 commit/push/远端 SHA 返回为准。