[Haskell-cafe] Program using 500MB RAM to process 5MB file
Sterling Clover
s.clover at gmail.com
Fri Apr 3 00:28:11 EDT 2009
I also suspect that manyTill is a really bad choice, since it doesn't
give you anything until the end token. It would be much better if you
could rewrite your parser in terms of many and many1.
--Sterl
On Apr 2, 2009, at 10:08 PM, Luke Palmer wrote:
> 2009/4/2 <lucas at die.net.au>
> I'm relatively new to haskell so as one does, I am rewriting an
> existing program in haskell to help learn the language.
>
> However, it eats up all my RAM whenever I run the program.
>
> http://hpaste.org/fastcgi/hpaste.fcgi/view?id=3175#a3175
>
> Obviously I'm doing something wrong, but without my magical FP pants I
> don't know what that might be.
>
> (1) You are using plain Strings. Those things are like 8 bytes per
> character (or something, someone more knowledgeable can give a more
> accurate figure). Use bytestrings (with bytestring-utf8 if you
> need it) instead.
>
> (2) You are parsing strictly, meaning you have to read the whole
> input file before anything can be output. This may be necessary
> for your application, but Haskell is very strong with streaming
> applications. Change to a lazy parser and you will run in constant
> memory.
>
> (I don't know offhand of any lazy parsing libraries, but I've heard
> them discussed before, so they're somewhere)
>
> Luke
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
More information about the Haskell-Cafe
mailing list