コンテンツにスキップ

他ライブラリとの比較

pyrs-yamlを、最も人気のある2つのPython YAMLライブラリと比較します。

パフォーマンス比較

パース速度(大規模YAML、約2 KB)

ライブラリ 時間 高速化率
pyrs-yaml 1.5 ms
PyYAML 57.7 ms 38倍遅い
ruamel.yaml 127.9 ms 85倍遅い

シリアライズ速度(大規模YAML、約2 KB)

ライブラリ 時間 高速化率
pyrs-yaml 0.17 ms
PyYAML 30.2 ms 177倍遅い
ruamel.yaml 63.1 ms 371倍遅い

ラウンドトリップ速度(大規模YAML、約2 KB)

ライブラリ 時間 高速化率
pyrs-yaml 1.6 ms
PyYAML 87.9 ms1 55倍遅い
ruamel.yaml 191.0 ms1 119倍遅い

機能比較

機能 pyrs-yaml PyYAML ruamel.yaml
YAML 1.2準拠
コメント(スタンドアロン)
コメント(インライン)
アンカー/エイリアス
タグ(明示的)
ブロックスカラー
フローコレクション
マージキー(<<)
複合キー
ラウンドトリップ保持
Pythonバインディング
ABI3(py3.8+)
型スタブ(.pyi)
多言語エラーメッセージ
Rustバックエンド
パフォーマンス 最速 遅い 遅い

まとめ

pyrs-yamlを選ぶべき場合

  • パフォーマンスが重要 — PyYAMLより解析で21〜43倍、シリアライズで55〜177倍高速
  • ラウンドトリップ保持が重要 — コメント、アンカー、タグを保持
  • PyYAML互換性が欲しい — 差し替え可能なAPI
  • 型ヒントが必要 — 完全な.pyiスタブ
  • 単一wheelで配布したい — ABI3はPython 3.8〜3.15全体で動作

PyYAMLを選ぶべき場合

  • すでに使用しており、ラウンドトリップ保持が必要ない
  • 既存コードとの最大限の互換性が必要
  • パフォーマンスを気にしない

ruamel.yamlを選ぶべき場合

  • 最も機能豊富なYAMLパーサーが必要
  • 複雑なYAML操作を行っている
  • パフォーマンスを気にしない(最も遅い選択肢)

移行パス

移行ステップ
# ステップ1: インストール
pip install pyrs-yaml

# ステップ2: インポートを置換
# Before:
import yaml

# After:
import pyrs_yaml as yaml

# ステップ3: テスト
# 既存のテストを実行して互換性を確認

ほとんどのコードは変更なしで動作します。主な違い:

  1. ラウンドトリップ出力はコメントとフォーマットを保持します
  2. エラーメッセージは詳細で、ローカライズ可能です
  3. パフォーマンスは大幅に向上します

  1. PyYAML/ruamel.yaml のラウンドトリップ時間は、同じベンチマークのパースとシリアライズの合計による推定値です。