On Sat, May 08, 2004 at 11:40:10AM +0100, Nicholas Clark wrote: > So I've fixed that and now it all runs in reasonable time. (As for all its > inherent horrors, perl's reference counting pretty much gets it right as to > when it's time to free up something)
Reasonable time being: perl5.9.1 compiled with the same options as ponie uses, and -DPURIFY to force similar malloc() behaviour runs all regression tests: All tests successful. u=1.7 s=0.77 cu=161.8 cs=14.92 scripts=782 tests=75469 ponie fresh from CVS: All tests successful. u=2.6 s=1.33 cu=325.74 cs=27.77 scripts=780 tests=75405 so about half the speed. Currently ponie has 2 additional big overheads that perl doesn't 1: it's also allocating a PMC for every scalar, registering it at creation, de-registering it when the reference count hits zero, and causing parrot to make GC runs that will find no garbage 2: all perl data structure operations are going through functions, rather than being direct lookups. Additionally all the lookups are through two levels of pointer indirection rather than one. As the code gets re-factored both these will go. Nicholas Clark