storing highly shared data structures
Simon Marlow
simonmar at microsoft.com
Tue Jan 10 10:46:15 EST 2006
Jan-Willem Maessen wrote:
>
> On Jan 10, 2006, at 4:26 AM, Simon Marlow wrote:
>
>> Christian Maeder wrote:
>>
>>> Bulat Ziganshin wrote:
>>>
>>>> CM> My old version is faster, because the version with
>>>> makeStableName does
>>>> CM> very much GC.
>>>>
>>>> CM> MUT time 27.28s ( 28.91s elapsed)
>>>> CM> GC time 133.98s (140.08s elapsed)
>>>>
>>>> try to add infamous "+RTS -A10m" switch ;)
>>>
>>> You saved my day, thank you Bulat!
>>> Without that flag:
>>> MUT time 24.30s ( 24.76s elapsed)
>>> GC time 131.25s (140.01s elapsed)
>>> EXIT time 0.00s ( 0.00s elapsed)
>>> Total time 155.55s (164.77s elapsed)
>>> And with it:
>>> MUT time 23.86s ( 24.86s elapsed)
>>> GC time 11.03s ( 11.68s elapsed)
>>> EXIT time 0.00s ( 0.00s elapsed)
>>> Total time 34.89s ( 36.54s elapsed)
>>
>>
>> The real problem seems to be that minor GCs are taking too long.
>> Having said that, you can usually reduce GC overhead with large -A or
>> -H options.
>
>
> Is the full table of stable names being traversed at every minor GC?
> If so, it might be worth somehow segregating the nursery stable names.
> I bet this complicates management a bunch, though, since right now
> there's only one table to look things up in.
It's traversed, but not re-hashed. So it shouldn't be a bottleneck,
unless the table is really huge. I agree that separating the gen 0
stable names into a separate table would be the right fix, though.
Cheers,
Simon
More information about the Glasgow-haskell-users
mailing list