Профилирующие парсеры, написанные с использованием библиотек парсера-комбинатора в Haskell
Каковы стандартные методы профилирования парсера, написанные в библиотеках комбинатора парсера в Haskell?
Я сейчас пользуюсь uu-parsinglib
но мне было бы очень интересно узнать методы профилирования и других библиотек синтаксического анализатора, таких как Parsec
,
Сейчас я написал свой анализатор, и он работает медленно и много оперативной памяти (для ввода 600 строк текста требуется около 5 секунд для анализа более 1 ГБ ОЗУ, и я хочу изучить, как его улучшить)
1 ответ
Попробуйте профилирование кучи:
$ ./prog +RTS -K128M -hc -p
$ hp2ps -c prog.hp
Если профиль похож на гору и находится в мегабайтах, возможно, вы сначала строите большую структуру данных, а затем уменьшаете ее (а затем можете использовать аккумуляторы или запоминание).
Более подробная информация: http://book.realworldhaskell.org/read/profiling-and-optimization.html