Piers Cawley <[EMAIL PROTECTED]> wrote:

> Interesting. I redid oofib.imc to only save the registers it cares
> about rather than using savetop, and here are my numbers (admittedly on
> a PowerMac G5:

>         parrot  parrotj parrotC perl    python  ruby
> oofib   3.770s  3.190s  2.950s  2.210s  1.100s  1.770s
> oofibt  7.750s  7.370s  6.960s  2.210s  1.140s  1.800s

You can't really compare these versions. The C<savetop> saves all 4
register frame types. Using C<-Oc> replaces it with <pushtopp>.

$ parrot -j oofib.imc                   # savetop
fib(28) = 317811 3.903611s

$ parrot -j -Oc oofib.imc               # pushtopp
fib(28) = 317811 2.569886s

$ parrot -j oofpc.imc                   # save/save
fib(28) = 317811 2.734809s

This is already with the new stack code using malloced memory and a
freelist for popped register frames. The two C<save> onto the user stack
take obviously longer now then memcpy()ing 16 pointers. Albeit I can
imagine that just moving 2 pointers could be faster, despite the
additional count argument. Or it needs at least 8 or such, who knows.

(unoptimized build, Python runs 2.1s, Perl 3.5s)

leo

Reply via email to