storing highly shared data structures

Simon Marlow simonmar at microsoft.com
Mon Jan 9 05:38:29 EST 2006


Christian Maeder wrote:
> Simon Marlow wrote:
> 
>> Right - Ptr isn't the right thing here, because GC will move objects
>> around.  That's why we have StablePtr and StableName. 
> 
> 
> may it be that makeStableName is expensive? (or it is my additional Map?)
> 
> My old version is faster, because the version with makeStableName does 
> very much GC.
> 
> Christian
> 
> 1. with makeStableName (and a Map):
> 
> 2,447,401,824 bytes allocated in the heap
> 703,294,688 bytes copied during GC
>  50,780,688 bytes maximum residency (24 sample(s))
> 
>        9328 collections in generation 0 (129.88s)
>          24 collections in generation 1 (  4.10s)
> 
>          99 Mb total memory in use
> 
>   INIT  time    0.00s  (  0.00s elapsed)
>   MUT   time   27.28s  ( 28.91s elapsed)
>   GC    time  133.98s  (140.08s elapsed)
>   EXIT  time    0.00s  (  0.00s elapsed)
>   Total time  161.26s  (168.99s elapsed)
> 
>   %GC time      83.1%  (82.9% elapsed)
> 
>   Alloc rate    89,714,143 bytes per MUT second
> 
>   Productivity  16.9% of total user, 16.1% of total elapsed

Interesting... this could mean that updating the stable name table on 
each GC is very costly.  This deserves more investigation, but I'm 
afraid it's not high on the priority list for me.  I can help if anyone 
else wants to look into it.

Cheers,
	Simon



More information about the Glasgow-haskell-users mailing list