Gemini CLI 修历史截断性能:unshift 换 push 消除 O(n²) 开销
Kaushik2210 · ghdev · 2026-09-26
google-gemini/gemini-cli 的一个社区 PR 优化了 truncateHistoryToBudget() 的数组重建逻辑。
- 问题:该函数按新到旧遍历消息以优先保留近期 tool 响应,再用 unshift() 逐个恢复时间顺序;JS 数组头部插入是 O(n),整体复杂度达 O(H² + ΣPᵢ²),且开销作用于整个历史,包括之后会被摘要掉的消息。
- 修复:改用 push() 追加,最后对 parts 数组和总历史各 reverse 一次;遍历方向与预算/截断决策完全不变,属行为保持型重构。
- 测试:新增回归测试锁定无截断时的消息与 parts 顺序,37/37 测试通过,eslint 与 tsc 检查干净。
「编程与Agent」频道最新
- 他用 Creatr 复刻 ChatGPT 界面原型,二月预测基本应验 — koltregaskes · 2026-09-27
- 开发者实测 Opus 5.5:从给 AI 打工变回 AI 给我打工 — ezshine · 2026-09-27
- AI Agent 用 TensorRT 把 Orpheus 3B 推理 RTF 从 1.03 压到 0.87 — TheMoonMidas · 2026-09-27
- gspot CLI:一套配置管住 AI 生成代码的 lint 与 agent 规则 — TheMoonMidas · 2026-09-27
- New Relic 报告:四分之一企业 AI Agent 处于无监控运行 — rvp · 2026-09-27
- 一条命令搞定 Claude Code 提示词体检:/checkup 清理冗余指令 — xiaohu · 2026-09-27