Почему PyYAML тратит так много времени только на анализ файла YAML?
Я анализирую файл YAML с около 6500 строк в следующем формате:
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:
Я просто хочу разобрать это сБиблиотека PyYAML (Я думаю, что нет больше альтернативы этому в Python:Как я могу разобрать файл YAML в Python).
Просто для тестирования, я пишу этот код для анализа моего файла:
import yaml
config_file = "/path/to/file.yaml"
stream = open(config_file, "r")
sensors = yaml.load(stream)
Выполнение сценария сtime
Команда вместе со сценарием я получаю на этот раз:
real 0m3.906s
user 0m3.672s
sys 0m0.100s
Что значения не делаюткажется, слишком хорошо на самом деле. Я просто хочу проверить то же самое с JSON, просто сначала конвертируя тот же файл YAML в JSON:
import json
config_file = "/path/to/file.json"
stream = open(config_file, "r")
sensors = json.load(stream) # We read the yaml config file
Но время выполнения намного лучше:
real 0m0.058s
user 0m0.032s
sys 0m0.008s
Почему основная причина того, что PyYAML тратит больше времени на разбор файла YAML, чем на разбор файла JSON? Это проблема PyYAML или из-за того, что формат YAML трудно разобрать?(вероятно, первый)
РЕДАКТИРОВАТЬ:
Я добавляю еще один пример с ruby и YAML:
require 'yaml'
sensors = YAML.load_file('/path/to/file.yaml')
И время выполнения хорошо! (или, по крайней мере, не так плохо, как пример PyYAML):
real 0m0.278s
user 0m0.240s
sys 0m0.032s