跳转至

基准测试

基准测试

基准测试环境

以下基准测试通过 CodSpeed CI(pytest-codspeed,WallTime 模式)测得,绝对时间可能因硬件而异,但相对加速比在不同硬件上保持一致。

pyrs-yaml 的性能基准测试,通过 CodSpeed CI(pytest-codspeed,WallTime 模式)测量。

方法论

  • 工具: divan(Rust)+ pytest-codspeed(Python)
  • 轮次: WallTime 模式,自适应采样(Python),100+ 次采样(Rust)
  • 指标: 中位数时间(Python,毫秒),平均时间(Rust,微秒)

解析性能

YAML 大小 pyrs-yaml PyYAML ruamel.yaml 相比 PyYAML 加速
小 (~100 B) 0.18 ms 3.8 ms 8.8 ms 21×
中 (~500 B) 0.56 ms 24.2 ms 56.1 ms 43×
大 (~2 KB) 1.5 ms 57.7 ms 127.9 ms 38×

序列化性能

YAML 大小 pyrs-yaml PyYAML ruamel.yaml 相比 PyYAML 加速
小 (~100 B) 0.04 ms 2.2 ms 4.9 ms 55×
中 (~500 B) 0.08 ms 12.6 ms 28.1 ms 159×
大 (~2 KB) 0.17 ms 30.2 ms 63.1 ms 177×

往返性能

YAML 大小 pyrs-yaml PyYAML ruamel.yaml 相比 PyYAML 加速
小 (~100 B) 0.22 ms 6.0 ms1 13.7 ms1 28×
中 (~500 B) 0.63 ms 36.8 ms1 84.2 ms1 59×
大 (~2 KB) 1.6 ms 87.9 ms1 191.0 ms1 55×

Rust 侧基准测试(divan)

在 Rust 层面测量(无 Python 开销):

操作 时间
解析(小) 85.6 µs
解析(中) 277.4 µs
解析(大) 840.6 µs
解析(含锚点) 254.3 µs
解析(含注释) 164.9 µs
解析(块标量) 123.8 µs
序列化(小) 7.9 µs
序列化(中) 32.2 µs
序列化(大) 76.1 µs
序列化(含锚点) 27.0 µs
序列化(块标量) 15.4 µs
往返(小) 91.7 µs
往返(中) 303.1 µs
往返(大) 910.0 µs

要点总结

  1. pyrs-yaml 解析比 PyYAML 快 21–43 倍、序列化快 55–177 倍
  2. pyrs-yaml 解析比 ruamel.yaml 快 48–100 倍、序列化快 123–371 倍,同时提供相同的往返特性
  3. Rust 侧解析极快 — 小文档解析仅需约 86 µs
  4. 序列化在所有尺寸下均快速 — 小文档序列化仅需约 8 µs
  5. 速度优势在所有文档尺寸下均保持

说明

  • 基准测试通过 CodSpeed CI 测量;绝对时间可能因硬件而异
  • 相对加速比(×N)在不同硬件上保持一致
  • PyYAML 基准测试使用 safe_load/safe_dump(相同安全保证)
  • ruamel.yaml 基准测试使用默认设置

  1. PyYAML/ruamel 的往返时间为同一基准测试中解析与序列化时间之和的估算值。