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