Files
future-harmony-freeze-oom-fix/harmony-ths-futures-freeze/doc/change-notes/04-curve-parsing-taskpool.md
T

2.1 KiB
Raw Blame History

曲线解析迁移至 Worker

修复提交

仓库 分支 Commit ID 说明
ohos_mobile_lib_communication work-freeze-lib-communication-1.1.1 031d4cf221b4da6d9aaf2db443ba293559a0d4a5 HXZip 解压与曲线解析迁移到通信 HAR 内持久 Worker
harmony-ths-futures work-20260818-clz-FUHM-1979-apm-appfreeze ce0719178530b5ca64272c6c1e90b5bcdb8297fc 重建并接入 libs/lib_communication20250903-worker-opt.har

目的

冻屏日志显示曲线解析在主线程执行 points × fields 双重循环,并反复完成整数读取与 HXLong 浮点转换,是曲线点数较大时的 CPU 热点。

TOP20 线上数据补充

TOP20 的 TOP7–TOP10 命中的是通信响应读取、连接转发和通道回调的分层函数,没有直接命中曲线解析函数。由于这些函数属于同一条响应管线,不能据此证明曲线解析仍是独立瓶颈;当前 Worker 版本的收益仍需使用新包按曲线大包场景重新采样确认。

修改文件

  • lib_communication/.../protocol/ConcurrentDecodeClient.ts
  • lib_communication/.../protocol/ConcurrentDecodeWorker.ts
  • lib_communication/.../protocol/MobileDataProcessor.ts

实现

扩展数据仍按原逻辑解析;剩余曲线字节、字段类型和点数提交给通信 HAR 内的持久 Worker。子线程保持原协议的小端读取、MD_TYPE_MASK 分支、HXLong 符号/指数/空值语义,返回按字段排列的数值列。宿主线程仅按字段 ID 重建 dataTabletypeTable

影响与风险

公开的 StuffCurveStruct 数据结构不变,重复字段 ID 仍以后出现的列为准。若实际单包接近 Worker 的 16 MB 序列化上限,需要进一步改为分块或共享缓冲区。

验证

基于 1.1.1-beta.1 的通信库 HAR 和默认 debug HAP 已构建、安装并完成行情周期切换验证。当前结果证明通信解析阶段的主线程负载下降,但 CurveView 刷新耗时和超时帧没有稳定改善;详细结果与限制见 06-communication-worker-ab-performance.md