Skip to content

[performance] 性能优化路线图:在文件读取移入 worker 后继续降低内存压力  #77

Description

@luojiyin1987

[performance] 性能优化路线图(个人项目收窄版)

背景

CLI 已经把文件读取移到了 lint worker 内部(#74),主进程不再一次性持有所有文件内容。最明显的一块内存浪费已经移除。

剩余压力主要来自:

  • worker 内的 parser / lint 工作集
  • 同时运行的 worker 数量
  • 超大 Markdown 文件
  • --fix 模式下的重复 lint / parse

考虑到这是个人 / 小型开源项目,优先做小而可验证的 CLI 边界控制,避免大改 parser / rule 执行模型。

目标

  • 保持 lintMarkdown() API 稳定
  • 不大改 parser、rule selector 或规则执行模型
  • 降低大文件 + 多 worker 场景的 OOM 风险
  • 优先做小 PR,每个 PR 都能单独 review
  • 性能 PR 提供 before / after benchmark
  • 不改变 lint 输出行为,除非显式声明

非目标

  • AST streaming / 增量 parser
  • 大规模重写 @lint-md/core
  • 改变 lint rule 语义
  • 改变 fix 输出行为(除非有单独 issue)

子 Issue(active scope)

实施顺序

  1. P1 自适应并发(done)
  2. P2 大文件策略

总验收

  • 每个子任务独立小 PR
  • 性能 PR 有 benchmark 数据
  • 不改变 lint 输出
  • 在 profiling 证明必要之前,AST streaming 保持非目标

Deferred / 暂缓项(含原因)

下列方向在 issue 起源时讨论过,但按本项目收益 / 风险评估暂缓:

  • P3 changed-file cache — invalidation、配置 / 版本 hash、--fix 安全性等失败面叠加,长期维护成本高于个人项目预期收益。
  • P4 core benchmark 分层基线 — 真实内存危机出现前 ROI 不足。
  • P5 text-node 扫描合并 — 触碰 core rule 执行模型,收益依赖实际规则集。
  • P6 fix mode 去重 — 多轮 fix / 震荡 / 最终输出一致性边界,风险高于收益。
  • P7 docs/performance.md — roadmap 收窄后单独的策略文档价值有限。
  • AST / incremental / streaming parser — 非近期目标;profiling 证明必要之前不做。

详细规格

  • P1 详细规格:#78
  • P2 详细规格:#81

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions