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

Reply via email to