Skip to content

性能测试

本文介绍如何运行 Incremark 的性能测试,对比不同流式 Markdown 解析器的性能表现。

测试目的

对比以下解析器在 AI 流式输出场景下的性能:

  • Incremark - 专为 AI 流式输出的增量解析器,O(n) 时间复杂度
  • Streamdown - 另一款流式 Markdown 解析器
  • markstream-vue - 面向 Vue 的流式解析方案
  • marked (ant-design-x) - 传统全量重解析方案,O(n²) 时间复杂度

测试方法

测试模拟 AI 流式输出场景,逐字符解析 Markdown 文本,记录每一步的解析时间。

测试数据位于 benchmark-compare/test-data/ 目录,包含多种典型场景:

  • 纯文本
  • 带格式文本(加粗、斜体、代码等)
  • 包含代码块的文本
  • 混合复杂格式

运行测试

1. 克隆测试脚本

bash
# 从项目仓库获取独立测试脚本
cd benchmark-compare

2. 安装依赖

bash
pnpm install

3. 运行测试

bash
pnpm benchmark

预期结果

测试完成后会输出各解析器的性能对比结果,包括:

  • 总解析时间
  • 平均每步解析时间
  • 峰值解析时间

结果分析

Incremark 的增量解析算法确保:

  • O(n) 时间复杂度 - 每次只解析新增内容
  • 稳定的性能表现 - 避免全量重解析的性能峰值
  • 更适合流式场景 - 随着文本增长,性能优势更明显

而传统方案(如 marked)每次都重新解析整个文本,时间复杂度为 O(n²),在长文本流式输出场景下性能会显著下降。