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