GHC profiling is not that hard. There are a few tutorials on the Internet that can help you (try Real World Haskell, ch 25 )

Running your code with "+RTS -pa -sstderr" can give you some hints on where it is hogging memory.

Regards.

Rafael

On Wed, Apr 27, 2011 at 15:25, Patrick LeBoutillier <patrick.leboutillier@gmail.com> wrote:
Felipe,

I tried the $! bit, but I get the same result. I guess there's another
leak somewhere...

Patrick

On Wed, Apr 27, 2011 at 11:20 AM, Felipe Almeida Lessa
<felipe.lessa@gmail.com> wrote:
> On Wed, Apr 27, 2011 at 11:52 AM, Patrick LeBoutillier
> <patrick.leboutillier@gmail.com> wrote:
>> How do I figure out why the program needs a lot of stack?
>
> Usually it is because you are building a large thunk.
>
>> Also, is there an easy way to increace performance?
>
> Getting rid of the thunks should increase performance as well.
>
> I've had just a quick look on your code, but here are some suggestions:
>
>> record :: (Ord n) => n -> Distrib n -> Distrib n
>> record n (Distrib m rs) = Distrib (M.alter f slot m) rs
>>  where f (Just n) = Just $ n + 1
>>        f Nothing = Just 1
>>        slot = findSlot n rs
>>        findSlot x (r@(Range a b):rs)
>>          | x >= a && x < b = r
>>          | otherwise       = findSlot x rs
>>        findSlot x []       = OutOfBounds
>
> Try changing "Just $ n + 1" to "Just $! n + 1".  It is possible that
> this change alone removes the leak (it is the only obvious leak I'm
> seeing right now).
>
> Also, for findSlot you may want to do a binary search, but that isn't
> related to the leak at all.
>
> Cheers,
>
> --
> Felipe.
>



--
=====================
Patrick LeBoutillier
Rosemère, Québec, Canada

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners



--
Rafael Gustavo da Cunha Pereira Pinto