История изменений
Исправление annulen, (текущая версия) :
Долго работает. Хотелось бы быстрее
NYTProf в помощь
Вообще тут напрашивается следующая отпимизация: не парсить неиспользуемые данные и записывать выходные данные сразу в файл вместо того, чтобы потом их заново обходить. Все манипуляции со списками item'ов сразу идут нафиг, так как нет никаких списков.
Для этого нужен парсер, работающий в pull- (запрос следующего токена в цикле) или «SAX-» (т.е. коллбэки) режиме. Если можно заложиться на конкретный вид форматирования файла, то я бы вообще тупо считывал его построчно и выплевывал новый item в файл в момент получения новой строки с /^- type:/, но если входной YAML может формироваться разными способами, то придется парсить честно.
В любом случае, печатать ответ надо не через DumpFile, а print'ом на ходу в процессе анализа данных. Это быстрее и короче
*UPD* Или найти потоковый YAML-writer, будет по-красивее чем print
Исходная версия annulen, :
Долго работает. Хотелось бы быстрее
NYTProf в помощь
Вообще тут напрашивается следующая отпимизация: не парсить неиспользуемые данные и записывать выходные данные сразу в файл вместо того, чтобы потом их заново обходить. Все манипуляции со списками item'ов сразу идут нафиг, так как нет никаких списков.
Для этого нужен парсер, работающий в pull- (запрос следующего токена в цикле) или «SAX-» (т.е. коллбэки) режиме. Если можно заложиться на конкретный вид форматирования файла, то я бы вообще тупо считывал его построчно и выплевывал новый item в файл в момент получения новой строки с /^- type:/, но если входной YAML может формироваться разными способами, то придется парсить честно.
В любом случае, печатать ответ надо не через DumpFile, а print'ом на ходу в процессе анализа данных. Это быстрее и короче