> > gc_alloc_new.pbc
> > gc_alloc_reuse.pbc
>
> I don't think these two tests are very interesting. They allocate
> quite large strings, so they don't put much strain on the GC.
> Instead, they measure how fast Parrot is at copying strings.

I believe that's a very good thing to be testing. If the pool allocates
more memory than it thinks it will need, it will perform less overall
copies at the expensive of larger callocs and worser performance in other
cases.

If the GC is generational, it will be able to detect the early
gc_alloc_new headers as 'old', and promote them into an older pool. It
should exhibit better performance.

Finally, gc_alloc_reuse has a header turnover. So while it allocates tons
of memory, the old memory is able to be marked unused and it has a
mostly-constant 'total_used' at any given time. If DOD runs aren't done,
this will demonstrate poor performance due to the old headers not getting
marked as unused, and it needing to allocate more memory blocks.

I think it is *because* they measure how fast parrot is at copying string
that these are good tests. GCs which avoid copying will perform better on
these.

Mike Lambert

Reply via email to