コンテンツにスキップ

ベンチマーク

ベンチマーク環境

ベンチマークは 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)

PythonオーバーヘッドなしのRustレベルで測定:

操作 時間
パース(小) 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.yaml のラウンドトリップ時間は、同じベンチマークのパースとシリアライズの合計による推定値です。