Bulat Ziganshin wrote:
Hello glasgow-haskell-users,
i have program that holds in memory a lot of strings (filenames) and
use my own packed-string library to represent these string. this
library uses newByteArray# to allocate strings. in my benchmark run
(with 300.000 filenames in memory) program prints the following
statistics:
37,502,956 bytes maximum residency (16 sample(s))
2928 collections in generation 0 ( 6.90s)
16 collections in generation 1 ( 12.20s)
65 Mb total memory in use
most of this memory occupied by filenames. note that 28 mb of memory
is used just for GC procedure (i use compacting GC)
No, that 65Mb is just what the heap grew to before it was collected. The
compacting GC has very little overhead: just room for the mark bits (1/32 or
1/64 of the heap size) and a few blocks for the mark stack.
You can make the size of the heap much closer to the size of the live data by
fiddling with +RTS -F, but then you'll end up doing a lot more GC.
Cheers,
Simon
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users