Dlaczego PyYAML spędza tyle czasu na analizowaniu pliku YAML?

Analizuję plik YAML zawierający około 6500 linii w tym formacie:

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:

Chcę po prostu przeanalizować to za pomocąBiblioteka PyYAML (Myślę, że w Pythonie nie ma więcej alternatyw:Jak mogę parsować plik YAML w Pythonie).

Tylko do testowania piszę ten kod, aby przeanalizować mój plik:

import yaml

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

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

Wykonywanie skryptu za pomocątime Polecenie wraz ze skryptem, który otrzymałem tym razem:

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

Te wartości naprawdę nie wydają się zbyt dobre. Chcę tylko przetestować to samo z JSON, konwertując najpierw ten sam plik YAML na JSON:

import json

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

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

Ale czas wykonania jest o wiele lepszy:

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

Dlaczego główny powód, dla którego PyYAML spędza więcej czasu na analizowaniu pliku YAML niż na analizowaniu JSON? Czy jest to problem PyYAML, czy może z powodu formatu YAML jest trudny do analizy?(prawdopodobnie jest pierwszym)

EDYTOWAĆ:

Dodam kolejny przykład z ruby ​​i YAML:

require 'yaml'

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

A czas wykonania jest dobry! (lub przynajmniej nie tak źle jak przykład PyYAML):

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

questionAnswers(1)

yourAnswerToTheQuestion