thedeemon: (Default)
[personal profile] thedeemon
"Сломался меч о пресс
При совершеньи харакири.
Проклятый цигун!"


К сравнению парсеров добавил Boost.Spirit 2.2 (из boost 1.42), там подсистема парсер-комбинаторов называется Qi (Ци). Порадовался лаконичности описания грамматики. Повеселился, глядя как компиляция маленького примера отнимает 20 секунд и 400 мегов памяти. Скорость парсинга оказалась чуть хуже классических комбинаторов на Окамле со списками, если не считать время на создание исходного списка, а только сам парсинг. 18 МБ/с. Поскольку это мой первый опыт со Spirit'ом, я мог все сделать неправильно и медленно, поэтому обращаюсь к общественности с той же просьбой: глянуть код (менее сотни строк) и подсказать, где я налажал. Как минимум, есть подозрение насчет неиспользования skip-parser'a. Код выложил здесь. Компилировал в VS2005.

Date: 2010-05-03 09:03 am (UTC)
From: [identity profile] sleepy-drago.livejournal.com
запустил собранный 10м экспрессом (у меня просто нет всех костылей чтобы запатчить 8ю под новую винду). у меня оно выдало на сингапуре примерно 0.27 сек. компилятор ел гдето 350М памяти. В спирите не спец но похоже что руками писать p_ws не нужно - он там вроде как есть аналогично тому для плавучки.
А где сравнение можно (будет) почитать?

Date: 2010-05-03 09:53 am (UTC)
From: [identity profile] thedeemon.livejournal.com
У меня 0.8 сек. Интересно, это компилятор настолько круче стал или машинка настолько быстрее?

Сравнение делается для статьи в ближайшем ПФП, который должен был выйти в пятницу, да подзадержался из-за меня в том числе. Статья про реализацию одного метода парсинга на Окамле, сравнение с другими методами там совсем краткое, просто чтобы было видно какое ускорение дает мой метод, и как скорость соотносится с известными альтернативами.

Date: 2010-05-04 11:37 am (UTC)
From: [identity profile] sleepy-drago.livejournal.com
я как-то отключил /LTCG чтобы не ждать по несколько минут линковки и заметил разницу в 30% от общего времени прогона программы :) Там доминировал кусок кода со взаимной рекурсией - видимо обычный оптимизатор боится лазить в такие места. Так что спириту может помочь.
машинка с intel quad 9300 (2.5GHz)

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 29th, 2026 08:18 pm
Powered by Dreamwidth Studios