[Haskell-cafe] Help with profiling
Carter Schonwald
carter.schonwald at gmail.com
Fri Dec 6 02:02:09 UTC 2013
you may want to try out using the Strict variant of IntMap
http://hackage.haskell.org/package/containers-0.5.3.1/docs/Data-IntMap-Strict.html
I've definitely had some scary space usage explosions with the lazy one on
occasions! (one embarrassing instance nearly two years ago was a 40gb space
blowup that turned into 100mb usage once i switched to a strict map)
On Thu, Dec 5, 2013 at 9:00 PM, Carter Schonwald <carter.schonwald at gmail.com
> wrote:
> Hey Uri,
> could you explain what those numbers represent? many of use the profiling
> tools, but we may not remember what columns / numbers mean what. What
> number seems wrong and what does the number mean? Also its very hard to
> help debug if you don't link to the code
>
> If you're hitting space leak problems, one culprit could be your data
> structure or the operations acting on it is too lazy! Have you tried making
> it stricter?
>
> cheers
> -Carter
>
>
> On Thu, Dec 5, 2013 at 8:13 PM, Uri Braun <uribraun at eecs.harvard.edu>wrote:
>
>> Hi Café,
>>
>> I'm attempting to profile my rather large (~18K LOC) Haskell program that
>> primarily manipulates graph structures based on Data.IntMap. The program
>> is chewing up _lots_ of memory (approx. 4G for 2.5K nodes & 2.5K edges)and I have profiled it in an attempt to figure out why. It
>> appears that the .prof and .hp (which I visualize with hp2ps -c) files
>> do not agree on the source of the problem. The hp results are located at:
>> *http://www.eecs.harvard.edu/~uribraun/sybil.ps*<http://www.eecs.harvard.edu/~uribraun/sybil.ps>and the top of the .prof file looks like this:
>>
>> COST CENTRE MODULE %time %alloc
>>
>> compare Policy.Edge 21.7 50.0
>>
>> eqPartition.edges Policy.EdgeQuad 6.5 3.7
>>
>> toConstructedSet Types.TaggedIntMultimap 6.1 3.6
>>
>> elems Types.TaggedIntMap 6.0 6.8
>>
>> elems Types.TaggedIntSet 5.7 3.8
>>
>> toPairs Types.TaggedIntMultimap 3.9 5.2
>>
>> assocs Types.TaggedIntMap 3.2 4.1
>>
>> eqIsValid Policy.EdgeQuad 2.9 0.5
>>
>> rIsValid Policy.Relations 2.2 0.2
>>
>> assocs.\ Types.TaggedIntMap 1.8 0.0
>>
>> keysSet Types.TaggedIntMap 1.5 1.7
>>
>> mergeIdenticalNodesT.exactMap Minimize.MergeIdentical 1.4 1.2
>>
>> fromList Types.TaggedIntSet 1.3 1.6
>>
>> tePartitionSrc Policy.TaggedEdge 1.2 0.9
>>
>> null Types.TaggedIntSet 1.2 0.0
>>
>> scc.comps Policy.Scc 1.2 0.9
>>
>> tePartitionTgt Policy.TaggedEdge 1.1 0.8
>>
>> member Types.TaggedIntSet 1.1 0.8
>>
>> alter Types.TaggedIntMap 1.0 1.1
>>
>> Also, the line in the .prof that corresponds to the anormUnion.name
>> (what the hprof image claims is taking up space) looks like (some spaces
>> removed):
>>
>> anormUnion.name Anormalize.Anormalize 2914 60
>> 0.0 0.0 0.0 0.0
>>
>> My main questions at this point are:
>>
>> 1. What are the chances the hprof image is just wrong?
>>
>> 2. What would you suggest I try next in debugging my space issue?
>>
>> This is my first big Haskell program, please do inform me of any big war
>> tools I don’t know about.
>>
>> Many thanks in advance!
>>
>> +Uri
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20131205/9275932d/attachment.html>
More information about the Haskell-Cafe
mailing list