The problem with the D GC

Ralf Schneider ralfs72_at_ at gmx.net
Tue Jan 9 10:54:35 PST 2007


> For what it's worth, I ran the test above with the modified GC in Tango, 
> for 10000 iterations of the "while(1)" loop.  The default behavior roughly 
> matched Phobos, with an 89 second run time and over 340MB of memory 
> consumed and growing steadily.  Then I told the GC to not scan the arrays 
> using the following calls:
>
>     gc.setAttr( data.ptr, GC.BlkAttr.NO_SCAN );
>     gc.setAttr( incoming.ptr, GC.BlkAttr.NO_SCAN );
>
> A test with these changes in place dropped the run time to 7 seconds with 
> 43MB of memory consumed and not growing.
>
> I grant that this isn't quite as nice as if D just figured out whether to 
> scan the block using TypeInfo, but at least it grants the programmer a way 
> to customize GC behavior somewhat to tune application performance. The 
> only stipulation with the current implementation is that block attributes 
> will not be preserved if an array is resized.  This isn't terribly 
> difficult to fix, but I haven't done so yet.

It dosen't seem so hard for me to let the compiler set such an attribute on 
arrays without pointers...

- Ralf 





More information about the Digitalmars-d mailing list