For purely academic purposes, I have re-synchronised some of my
forbidden code with the latest CVS version of Parrot. All tests pass
without gc debug; and with gc_debug plus Steve Fink's patch.
Benchmarks follow, on a 166MHz Pentium running linux 2.2.18.

                                     Parrot      African Grey
life (5000 generations)           172 seconds      81 seconds
reverse <core_ops.c >/dev/null    193 seconds     130 seconds
hanoi 14 >/dev/null                51 seconds      37 seconds

The differences between the two versions are:
1) Use of the interpreter cycle-counter instead of stack walking.
2) Linked lists of buffer headers sorted by bufstart
3) COW-supporting code in GC (for all buffer objects)
4) Implementation of COW for string_copy and string_substr

Items 1 and 2 use techniques that have been specifically banned,
and items 3 and 4 depend on item 2, so none of this code is
usable in Parrot (which is why I haven't attached any patches)

Some of the changes I made before the memory management 
code was totally reorganised  have not yet been re-integrated. 
My last version prior to that reorganisation ran 5000 lives in 
61 seconds, and I hope to get back to somewhere close to 
that again.

-- 
Peter Gibbs
EmKel Systems



Reply via email to