Files
Velix-MPV-Core/DOCS/PERFORMANCE_CHANGES.md
T

1.8 KiB
Raw Blame History

Phase 6 性能改动与证据

已采用

  1. 事件驱动渲染更新:render.cpp 不再每 16ms 无条件调用 mpv_render_context_update,只在 mpv callback/窗口事件唤醒时更新;为避免个别会话漏回调,最多每 250ms 做一次安全探测。5 次 startup 的 update 累计从优化前 617 降到最终实现 364,且 20 次 startup 未复现永久 BUFFERING。
  2. 核心快照合并:PlaybackEngine 对 100ms 内的重复 get_snapshot/get_tracks/get_media_info/get_network_info 做合并,动作仍立即提交到 MPV,状态最多延迟一个合并窗口。200 次 play/pause 末次面板显示 coreSyncSkipped=239;无 error,状态为 PAUSED。
  3. NAPI 诊断轮询降频:Playback Lab 面板由 250ms 调整为 500ms;播放控制、音频 callback 和渲染线程不依赖该轮询。这样减少纯 UI 诊断序列化,不改变 MPV 时钟。旧/新间隔在 Index.ets 可审计,运行中由 getStateCalls、serializeUsTotal 记录。
  4. session id 原子读取:渲染线程不再为每次唤醒获取 PlaybackEngine 快照互斥锁,session 更新仍由核心快照写入 release/acquire atomic;首帧 session 隔离 smoke 和 stress 均通过。

未采用

  • 不做主动丢帧、降低音频采样率或缩小视频分辨率;这些会改变播放质量。
  • 不做 GPU mapper、OHCodec 直出或 FFmpeg-Harmony 源码改动;实体设备 capability 和 fence 证据不足。
  • 不把 PSS、heap、CPU permille、2 小时长跑结果伪装成已测数据。

回归与开销

默认构建、软件构建和 FFmpeg-Harmony 构建均通过。默认 HAP 在模拟器上完成 startup/seek/audio 状态面板、load/stop 100 次和 play/pause 100 次。release/profile 构建未启用持续 tracing;诊断仅累加轻量计数和受控序列化时间。