[Haskell-cafe] Question about memory usage

Sebastian Fischer sebf at informatik.uni-kiel.de
Tue Aug 17 02:59:29 EDT 2010


On Aug 17, 2010, at 12:33 AM, Jason Dagit wrote:

> So next I would use heap profiling to find out where and what type  
> of data the calculation is using.

I did.

> I would do heap profiling and look at the types.

All retained data is of type ARR_WORDS. Retainer profiling shows that  
the majority is retained by the cost center SYSTEM.

I suspected that a strict, tail recursive version of `matrixPower` may  
be more efficient and implemented it:

     http://github.com/sebfisch/fibonacci/blob/tailrec/Data/Numbers/Fibonacci.hs

But it's worse. Still, the only retained data is of type ARR_WORDS  
mostly retained by SYSTEM but even more of it now. Additional bang  
patterns on `square` and `times` make no difference.

I wonder whether the numbers in a single step of the computation  
occupy all the memory or whether old numbers are retained although  
they shouldn't be. Are (even large) Integers evaluated completely when  
forcing their head-normal form?

Any insight of a performance guru is welcome ;)

Cheers,
Sebastian

[off topic post scriptum]

On Aug 16, 2010, at 6:03 PM, Jacques Carette wrote:

> Any sequence of numbers given by a linear recurrence equation with  
> constant coefficients can be computed quickly using asymptotically  
> efficient matrix operations.  In fact, the code to do this can be  
> derived automatically from the recurrence itself.

This is neat. Is it always M^n for some matrix M? How does it work?

-- 
Underestimating the novelty of the future is a time-honored tradition.
(D.G.)



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20100817/3cf71b15/attachment-0001.html


More information about the Haskell-Cafe mailing list