On Tuesday 15 April 2008 17:19:42 Jonathan Worthington wrote:

> I thought that detecting when the signature on the caller and callee
> side were identical and fast-tracking that might help. I stuck in
> something to count how many times this happened. It was the case in 23%
> of calls while compiling Rakudo. So I did the optimisation in the
> attached patch, which basically just copies arguments from one set of
> registers to the other about as efficiently as I can see how to do it.
>
> The end result? I can't actually detect enough of a difference to make
> me think I've really improved anything. Not in the compilation time of
> Rakudo's actions.pm, nor when I took a Perl 6 Ackerman's function
> implementation and ran it under Rakudo.

It helps the PIR Ackerman benchmark by 4.67%.  parrot_pass_args gets more 
expensive, but next_arg_sig and everything else except for 
Parrot_init_arg_indexes_and_sig_pmc gets called much, much less.  I played 
with the patch a little bit, but didn't get it much faster.

It may be possible to avoid the Parrot_init_arg_indexes_and_sig_pmc calls, but 
I couldn't immediately see how.

-- c

Reply via email to