Warum verbringt PyYAML so viel Zeit damit, eine YAML-Datei zu analysieren?

Ich analysiere eine YAML-Datei mit ca. 6500 Zeilen in folgendem Format:

foo1:
  bar1:
    blah: { name: "john", age: 123 }
  metadata: { whatever1: "whatever", whatever2: "whatever" }
  stuff:
    thing1: 
      bluh1: { name: "Doe1", age: 123 }
      bluh2: { name: "Doe2", age: 123 }
    thing2:
    ...
    thingN:
foo2:
...
fooN:

Ich möchte es nur mit dem analysierenPyYAML-Bibliothek (Ich denke, es gibt in Python keine Alternativen mehr dazu:Wie kann ich eine YAML-Datei in Python analysieren?).

Nur zum Testen schreibe ich diesen Code, um meine Datei zu analysieren:

import yaml

config_file = "/path/to/file.yaml"

stream = open(config_file, "r")
sensors = yaml.load(stream)

Ausführen des Skripts mittime Befehl zusammen mit dem Skript bekomme ich dieses Mal:

real    0m3.906s
user    0m3.672s
sys     0m0.100s

Diese Werte scheinen nicht wirklich gut zu sein. Ich möchte dasselbe nur mit JSON testen und die gleiche YAML-Datei zuerst in JSON konvertieren:

import json

config_file = "/path/to/file.json"

stream = open(config_file, "r")
sensors = json.load(stream)  # We read the yaml config file

Die Ausführungszeit ist aber weitaus besser:

real    0m0.058s
user    0m0.032s
sys     0m0.008s

Warum verbringt PyYAML hauptsächlich mehr Zeit mit dem Parsen der YAML-Datei als mit dem Parsen der JSON-Datei? Handelt es sich um ein PyYAML-Problem oder ist es aufgrund des YAML-Formats schwer zu analysieren?(wahrscheinlich ist der erste)

BEARBEITEN:

Ich füge ein weiteres Beispiel mit Ruby und YAML hinzu:

require 'yaml'

sensors = YAML.load_file('/path/to/file.yaml')

Und die Ausführungszeit ist gut! (oder zumindest nicht so schlecht wie das PyYAML-Beispiel):

real    0m0.278s
user    0m0.240s
sys     0m0.032s

Antworten auf die Frage(1)

Ihre Antwort auf die Frage