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