性能测试
本文介绍如何运行 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-compare2. 安装依赖
bash
pnpm install3. 运行测试
bash
pnpm benchmark预期结果
测试完成后会输出各解析器的性能对比结果,包括:
- 总解析时间
- 平均每步解析时间
- 峰值解析时间
结果分析
Incremark 的增量解析算法确保:
- O(n) 时间复杂度 - 每次只解析新增内容
- 稳定的性能表现 - 避免全量重解析的性能峰值
- 更适合流式场景 - 随着文本增长,性能优势更明显
而传统方案(如 marked)每次都重新解析整个文本,时间复杂度为 O(n²),在长文本流式输出场景下性能会显著下降。