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