
• 基于静态代码路径分析（未跑 profiling），当前主要拥堵点如下：

  拥堵点

  - pandoc/typst 实际转换本身就是最大耗时；且目录模板在沙箱内每次平铺复制，I/O 放大（src/mark2pdf/helper_typst/
    helper_typst.py:100、src/mark2pdf/helper_typst/helper_typst.py:161）。
  - 每次转换都会调用 check_pandoc_typst，又各自跑两次 pandoc/typst --version，批量场景下重复成本明显（src/mark2pdf/
    core/core.py:199、src/mark2pdf/helper_typst/helper_typst.py:281）。
  - 默认预处理链对全文多轮扫描：MarkdownIt 解析+多次保护区计算，再叠加多步替换，长文 CPU 压力大（src/mark2pdf/core/
    utils.py:162、src/mark2pdf/helper_markdown/md_preprocess.py:360、src/mark2pdf/helper_markdown/
    md_preprocess.py:644、src/mark2pdf/helper_markdown/md_preprocess.py:1037）。
  - 繁体转换重复：CLI 将 tc 加入后处理链，同时 core 里又执行一次，且 OpenCC 每次新建实例（src/mark2pdf/cli.py:100、src/
    mark2pdf/process_builder.py:79、src/mark2pdf/core/core.py:260、src/mark2pdf/core/utils.py:22）。
  - 批量转换串行执行，每个文件都跑完整流程，吞吐受限（src/mark2pdf/conversion.py:258、src/mark2pdf/
    conversion.py:285）。
  - 元数据与字体检查重复：frontmatter 反复 YAML 解析；verbose 时字体目录 rglob 成本高，字体库大时拖慢（src/mark2pdf/
    helper_markdown/md_preprocess.py:614、src/mark2pdf/core/utils.py:108、src/mark2pdf/core/core.py:54）。

  优化建议

  1. 把 check_pandoc_typst 改为一次性检查（模块级缓存），在 CLI 入口或 batch 开始时执行，避免每文件重复；必要时提供
     --skip-tool-check。   [已经处理]
  2. 模板处理改为复用/链接：模板目录一次性 staging 或 symlink；或用 --resource-path + 原模板路径，避免每次复制。
  3. 预处理优化：缓存 MarkdownIt 实例、预编译正则；合并 pre_for_typst_at/pre_for_typst_dollarmark 的保护区计算或做单次扫描变换。 [已经处理]
     - 调研结论：可行且必要。MarkdownIt 每次重建开销大；get_protected_regions 正则扫描重，合并 @/$ 处理可减少一半扫描。
  4. OpenCC 单例 + 去重：缓存 OpenCC('s2t') 为模块级变量；并在 CLI 中二选一（只用后处理链或只用 options.tc），避免双转换。 [已经处理]
  5. 批量并发：增加 --jobs，用 ProcessPoolExecutor 并发多个文件；默认 1，允许用户按机器调大并限制同时 pandoc 数。 [已经处理]
  6. frontmatter/字体缓存：同一文件多阶段复用 frontmatter 解析结果；字体目录预扫描一次并缓存小写。 [已经处理]

  想先落地哪几项？直接回我编号即可。