干掉 HistoryManager 内部两条 O(N) 全扫 hot path (Mac 仍闪退根因)
第二阶段发布后用户日志显示: 启动 8s 后 5s 内连续 5 次 load_history_index 全扫 513 条 + 513 次 stat, 主线程累计阻塞, 随后日志戛然而止 (典型 jetsam SIGKILL 指纹). 定位到两条阶段 1+2 没修的 hot path: 1. get_history_item(timestamp): 点击历史项查看详情时触发, 原走 load_history_index() + 线性查找. 改为直接调 load_history_item_fast() (读单个 metadata.json), O(1). 2. _update_history_index(history_item): 每次生成完图都调, 原走 load_history_index() 全扫 + from_dict + 路径修正 + 整表写回. 改为直接对 raw json list dict 操作, 无 stat / 无 from_dict. 改完之后 hot path 完全不再触发 _fix_history_path 循环.
Showing
1 changed file
with
31 additions
and
19 deletions
-
Please register or sign in to post a comment