XML 性能测试
zerodep XML 与 xmltodict 的同类对比性能测试。
测试环境
- CPU: x86_64 Linux
- Python: 3.12
- 工具: pytest-benchmark 5.2.3(报告均值)
- 对标库: xmltodict 1.0.4
- 最后更新: 2026-04-21
实现对比
| 实现 |
文件/包 |
说明 |
| zerodep |
xml.py |
仅依赖标准库的 XML ↔ dict 转换器,含 LLM 标签提取 |
| xmltodict |
(参考库) |
流行的基于 expat 的 XML ↔ dict 转换器 |
测试数据规模
| 标签 |
说明 |
| 小型 |
包含 3 个子元素的简单元素 |
| 中型 |
包含 25 个 URL 条目的 Sitemap XML |
| 大型 |
包含 200 个商品的产品目录,含属性和嵌套标签 |
解析性能(均值)
| 数据规模 |
zerodep |
xmltodict |
倍数 |
| 小型 |
14.9 μs |
17.4 μs |
快 1.2x |
| 中型 |
380.7 μs |
442.6 μs |
快 1.2x |
| 大型 |
5,210.0 μs |
5,750.0 μs |
快 1.1x |
反序列化性能(均值)
| 数据规模 |
zerodep |
xmltodict |
倍数 |
| 小型 |
14.6 μs |
19.9 μs |
快 1.4x |
| 中型 |
278.1 μs |
455.1 μs |
快 1.6x |
| 大型 |
4,030.0 μs |
6,480.0 μs |
快 1.6x |
| 操作 |
耗时 |
| 提取全部标签(100 个标签) |
569.2 μs |
| 按名称过滤(50 个匹配) |
346.5 μs |
| 仅提取第一个 |
7.7 μs |
要点总结
- 解析快 1.1-1.2 倍 -- zerodep 现已在所有文档规模下领先 xmltodict,包括小型输入。
- 反序列化快 1.4-1.6 倍 -- 序列化是 zerodep 优势最明显的环节,数据越大差距越大。
- extract_tags 无竞品 -- 这是专为 LLM 输出解析设计的独特功能。
first_only=True 优化极快(约 7.7 μs)。
- 两者都使用 expat -- 不同于 YAML/JSON 中 zerodep 重新实现了解析器,zerodep 和 xmltodict 底层使用相同的 C 语言 expat 解析器,反序列化加速来自更高效的字符串构建。
自行运行
pip install pytest pytest-benchmark xmltodict
pytest xml/test_xml_benchmark.py --benchmark-only -v
最新 CI 结果
每次发版时通过 Benchmark CI 自动更新。