跳转至

Diff 性能测试

zerodep diff 实现与 unidiff 的同条件性能对比。

测试环境

  • CPU: x86_64 Linux
  • Python: 3.12
  • 工具: pytest-benchmark 5.2.3(报告均值)
  • 对标库: unidiff 0.7.5
  • 最后更新: 2026-04-21

实现对比

实现 文件/包 说明
zerodep diff.py 仅标准库的 unified diff 解析器和补丁应用器
unidiff (参考库) 流行的 unified diff 解析库

测试数据大小

标签 说明
5 行文件,1 处变更
50 行文件,3 处变更(3 个 hunk)
1000 行文件,10 处变更(10 个 hunk)

解析性能对比(均值)

测试 zerodep unidiff 比率
10.5 μs 21.9 μs 快 2.1 倍
31.5 μs 63.2 μs 快 2.0 倍
96.5 μs 194.2 μs 快 2.0 倍

应用性能(仅 zerodep)

unidiff 不提供补丁应用功能,因此这些是 zerodep 独有的基准测试。

测试 zerodep
2.0 μs
6.5 μs
55.2 μs

要点总结

  • 持续更快 —— zerodep 的 diff 解析器在所有差异规模下均比 unidiff 快 2.0-2.1 倍
  • 线性增长 —— 两种实现都随差异大小线性增长,符合预期。
  • 功能更多 —— zerodep 除了解析外,还提供补丁应用、反转和三路合并功能,而 unidiff 仅提供解析。
  • 往返正确性 —— apply_patch(a, parse_patch(make_diff(a, b))) == b 已通过 13 个参数化测试用例验证,包括边缘情况(Unicode、无尾换行、Windows 换行符)。

自行运行

pip install pytest pytest-benchmark unidiff
pytest diff/test_diff_benchmark.py --benchmark-only -v

最新 CI 结果

每次发版时通过 Benchmark CI 自动更新。