[Haskell-cafe] Aeson memory use

Lana Black lanablack at amok.cc
Thu Aug 9 12:57:15 UTC 2018


On 08/08/2018 08:24 PM, Vanessa McHale wrote:
> I'm not 100% sure it's applicable in your case, but perhaps trying
> threadscope would be a good idea?
> 
> Based on the heap profile, I'm guessing that most of the allocations are
> due to slicing ByteStrings up. What happens when you try to read a map
> of Integers?

Parsing a 'Map Int Int' gives a similar picture, with slightly lower 
memory use due to the absence of [Text]. However, it is still in the 
hundreds of megabytes for a 10 megabyte file. I also noticed that Map 
itself contributes significantly to the memory footprint.

> I'd also note that your example uses evaluate and performGC which isn't
> entirely realistic and thus may not actually correspond to the
> performance of the application in practice. I gather it *was* a problem
> in practice but nonetheless it's always good to benchmark the right thing.
> 

Removing evaluate and force adds THUNKs to the heap profile, which is 
probably the wrong thing to benchmark anyway. What I was trying to 
benchmark was the memory footprint during the parsing stage and after 
it, when only the resulting data should be residing in memory.


More information about the Haskell-Cafe mailing list