M15 / v6 正式
29.8 FPS
像素 diff、语义脏区、clipped render 与双画布协作,空闲稳定 29.6–29.8 FPS。
性能优化始终遵循一条顺序:先有完全正确的全量参考,再减少真正不变的工作。每次优化都用多帧逐像素测试证明输出没有退化。
M15 / v6 正式
像素 diff、语义脏区、clipped render 与双画布协作,空闲稳定 29.6–29.8 FPS。
帧耗时不是一个数字,而是:
logic + render + compare/diff + present/flush + scheduler overhead最初全量 466×466 重绘和提交正确但慢。只减少总线提交仍不够,因为每帧扫描 217,156 像素也消耗 PSRAM 带宽;只做语义脏区比较仍不够,因为场景绘制本身约 21.6 ms。最终需要同时减少绘制、比较和提交。
比较前后画布,只提交变化像素。present 降到约 6.9 ms,但全屏扫描和全场景 render 仍限制在约 26.8 FPS。
根据已知对象直接标记核心、helper、轨道、数字和底部控制区。购买、设置或页面切换才全帧,稳定帧不再扫描所有像素。
把裁剪下沉到 framebuffer 绘制:只重画会动的矩形。静态文字和大区域按状态指纹或低频更新;动态中心仍按 presentation rate。
动效、粒子、浮字与倾斜对象使用旧/新包围盒并集,解决尾迹。8 个场景 × 30 帧的增量输出逐像素等同全量参考。
不是每个动画都需要 30 次换帧:helper 本来只有 6/8 FPS authored 帧,静态文字更低频。主循环仍以 30 FPS 响应触摸和粒子,宽区域按素材真实相位更新。
LVGL 的 33 ms 请求叠加协作调度开销会低于 30 FPS;v7 用 32 ms 请求补偿,普通验收场景回到约 29.2–29.3 FPS。Reduced 使用约 67 ms,ambient 500 ms。
v7 当前复杂存档比一次性验收存档多出已解锁对象,同时 IMU 33 ms、PWR 50 ms 任务持续运行,因此稳定约 26.2–26.7 FPS。这是被记录的现状,不被“目标 30 FPS”掩盖;下一阶段应继续以 render 23 ms 与 present 7 ms 的实测分项为入口。