On 16 April 2005 23:19, Josef Svenningsson wrote:

> OK, I've cooked up this little program to study the behaviour a
> little closer: \begin{code}
> module Main where
> 
> main = print $ strictId [1..]
> 
> strictId list = let (c,c') = work list c'
>                 in c
>   where work [] y' = (y',[])
>       work (x:xs) y' = (v,x:v')
>         where (v,v') = work xs y'
> \end{code}
> 
> This program just allocates like crazy til it dies. The funny looking
> strictId function is just the strict identity function on lists. (Yes,
> there are simpler ways to achieve the same thing. I just think the
> above function is particularly sweet :-)
> 
> I do the following:
> $ ghc -prof -auto-all --make Main.hs
> $ main.exe +RTS -hd -M<VERY MUCH>
> 
> The resulting graph is suspiciously similar in shape to the one of my
> previous program. The garbage collector is still my primary suspect, I
> simply don't know how to explain the graph otherwise.

I don't see a curve in the profile on my machine:

  http://www.haskell.org/~simonmar/main.exe.ps

This was on a Windows box, I also get the same results on a Linux
machine.  I was only able to test with -M600m on the Windows box.  Do
you need more to get the curve?

Cheers,
        Simon
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to