我一直在尝试使用haskell程序读取和索引一组链接和维基百科摘要。目的是
问题是我的程序非常慢并且使用大量内存。我做了一些分析,我知道大部分时间(约50%)花在垃圾收集上。我已经尝试了一切我能想到的东西,包括:
代码,数据,分析输出和编译内容:https://gist.github.com/ririw/8205284
谢谢!
答案 0 :(得分:1)
好的,我设法将测试集的内存使用量减少了100MB左右(dbpedia链接数据集的前400K行,http://downloads.dbpedia.org/3.9/en/wikipedia_links_en.nt.bz2处可用)。
我通过切换到io-streams库来实现这一点,这个库似乎解决了一些懒惰问题。
您可以在https://gist.github.com/ririw/8207250
看到新的解决方案在一个7574825行数据集上,它确实没问题,并且内存使用量的增长方式与我希望哈希表填充自身并随机移动(http://imgur.com/pcDnKcP)的方式相同。当然,这也可能是io-streams缓冲区做同样的事情。
它仍然使用了大量的内存:(,但我认为已经解决了懒惰/ io问题