在Haskell中分析在解析器组合库中编写的解析器的标准方法是什么?
我目前正在使用uu-parsinglib
,但我非常有兴趣了解其他解析器组合库(如Parsec
)的分析方法。
现在我已经编写了我的解析器并且它很慢并且吃了很多ram(对于600行输入文本,需要大约5秒来解析超过1Gb的RAM并且我想研究如何改进它)
答案 0 :(得分:2)
尝试堆分析:
$ ./prog +RTS -K128M -hc -p
$ hp2ps -c prog.hp
如果个人资料看起来像一座山并且在兆字节中, 可能你首先构建一个大型数据结构,然后减少它 (然后可以考虑使用累加器或记忆)。
更详细的信息:http://book.realworldhaskell.org/read/profiling-and-optimization.html