34 lines
2.1 KiB
Markdown
34 lines
2.1 KiB
Markdown
# 曲线解析迁移至 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 重建 `dataTable` 和 `typeTable`。
|
||
|
||
## 影响与风险
|
||
|
||
公开的 `StuffCurveStruct` 数据结构不变,重复字段 ID 仍以后出现的列为准。若实际单包接近 Worker 的 16 MB 序列化上限,需要进一步改为分块或共享缓冲区。
|
||
|
||
## 验证
|
||
|
||
基于 `1.1.1-beta.1` 的通信库 HAR 和默认 debug HAP 已构建、安装并完成行情周期切换验证。当前结果证明通信解析阶段的主线程负载下降,但 `CurveView` 刷新耗时和超时帧没有稳定改善;详细结果与限制见 `06-communication-worker-ab-performance.md`。
|