LINUX.ORG.RU

История изменений

Исправление annulen, (текущая версия) :

Долго работает. Хотелось бы быстрее

NYTProf в помощь

Вообще тут напрашивается следующая отпимизация: не парсить неиспользуемые данные и записывать выходные данные сразу в файл вместо того, чтобы потом их заново обходить. Все манипуляции со списками item'ов сразу идут нафиг, так как нет никаких списков.

Для этого нужен парсер, работающий в pull- (запрос следующего токена в цикле) или «SAX-» (т.е. коллбэки) режиме. Если можно заложиться на конкретный вид форматирования файла, то я бы вообще тупо считывал его построчно и выплевывал новый item в файл в момент получения новой строки с /^- type:/, но если входной YAML может формироваться разными способами, то придется парсить честно.

В любом случае, печатать ответ надо не через DumpFile, а print'ом на ходу в процессе анализа данных. Это быстрее и короче

*UPD* Или найти потоковый YAML-writer, будет по-красивее чем print

Исходная версия annulen, :

Долго работает. Хотелось бы быстрее

NYTProf в помощь

Вообще тут напрашивается следующая отпимизация: не парсить неиспользуемые данные и записывать выходные данные сразу в файл вместо того, чтобы потом их заново обходить. Все манипуляции со списками item'ов сразу идут нафиг, так как нет никаких списков.

Для этого нужен парсер, работающий в pull- (запрос следующего токена в цикле) или «SAX-» (т.е. коллбэки) режиме. Если можно заложиться на конкретный вид форматирования файла, то я бы вообще тупо считывал его построчно и выплевывал новый item в файл в момент получения новой строки с /^- type:/, но если входной YAML может формироваться разными способами, то придется парсить честно.

В любом случае, печатать ответ надо не через DumpFile, а print'ом на ходу в процессе анализа данных. Это быстрее и короче