> On 12 Apr 2016, at 04:40, Daniel Green (via RT) 
> <perl6-bugs-follo...@perl.org> wrote:
> 
> # New Ticket Created by  Daniel Green 
> # Please include the string:  [perl #127881]
> # in the subject line of all future correspondence about this issue. 
> # <URL: https://rt.perl.org/Ticket/Display.html?id=127881 >
> 
> 
> '@array[0, 3, 7]' is much slower than '(@array[0], @array[3], @array[7])'
> 
> 
> time perl6 -e 'my @a = ^500;my @f;my $s = @a.elems;loop (my $i1 = 0; $i1 <
> $s-1; $i1++) { loop (my $i2 = $i1+1; $i2 < $s; $i2++) { @f.push(@a[$i1,
> $i2]) } };'
> 
> real    0m14.974s
> user    0m14.947s
> sys     0m0.017s
> 
> 
> time perl6 -e 'my @a = ^500;my @f;my $s = @a.elems;loop (my $i1 = 0; $i1 <
> $s-1; $i1++) { loop (my $i2 = $i1+1; $i2 < $s; $i2++) { @f.push((@a[$i1],
> @a[$i2])) } };'
> 
> real    0m0.897s
> user    0m0.877s
> sys     0m0.017s
> 
> 
> With Rakudo version 2016.03 built on MoarVM version 2016.03

This is a known issue.  Anytime you use lists, the optimization paths are not 
that well developed yet.  To give you another example:

$ 6 'for ^100000 { my ($a,$b) = 42,666 }'
real    0m1.628s
user    0m1.582s
sys     0m0.041s

$ 6 'for ^100000 { my $a = 42; my $b = 666 }'
real    0m0.180s
user    0m0.152s
sys     0m0.026s

$ 6 'for ^100000 { my $a; my $b }'
real    0m0.170s
user    0m0.144s
sys     0m0.025s

$ 6 'say (1628 - 170) / (180 - 170)’
145.8


Liz

Reply via email to