FWIW I made a throwaway script that looks for unused params, and there are many
of these in rakudo sources. Of course, most of these cases are not in hot
paths, but the overall performance benefit may be very noticeable.

There are also cases like this:
https://github.com/rakudo/rakudo/blob/nom/src/core/IO/Socket/Async.pm#L313-L315
where named arg is present in the signature but does absolutely nothing (or so
it seems?).

Dunno if I should post the results. There are many false-positives and I guess
many cases are not caught at all, so a proper approach is needed if we really
want to replace all these with $.

On 2017-10-14 20:12:49, alex.jakime...@gmail.com wrote:
> Oh, I guess it applies to methods as well.
>
> On 2017-10-14 20:10:15, alex.jakime...@gmail.com wrote:
> > Code:
> > sub f1($a, $, $, $, $, $) { 1 };
> > my $s;
> > $s += f1($_, $_, $_, $_, $_, $_) for ^1_000_000;
> > say now - BEGIN now
> >
> > Result:
> > 0.43209886
> >
> >
> > Code:
> > sub f2($a, $b1, $b2, $b3, $b4, $b5) { 1 };
> > my $s;
> > $s += f2($_, $_, $_, $_, $_, $_) for ^1_000_000;
> > say now - BEGIN now
> >
> > Result:
> > 0.6635439
> >
> >
> > None of the params are used but still replacing them with just $ makes
> > things run faster.
> >
> > The difference is measurable and you can increase the number of loops
> > to observe it even better.
> >
> >
> > This ticket is motivated by a pull request which used that observation
> > to speed things up in rakudo:
> > https://github.com/rakudo/rakudo/pull/1196
> >
> >
> > This is Rakudo version 2017.09-375-ga0f29e0df built on MoarVM version
> > 2017.09.1-594-gb9d3f6da
> > implementing Perl 6.c.

Reply via email to