To me it looks like the loop and the string concat are okay-ish (this is on a 
"not too beefy" machine (i3 3.33 GHz, 8 GiB RAM):

$ perl6-m -e 'my $file = ""; for ^20000 {$file ~= "$_;"};'

real    0m0.500s
user    0m0.436s
sys     0m0.060s

$ perl6-p -e 'my $file = ""; for ^20000 {$file ~= "$_;"};'

real    0m1.717s
user    0m1.588s
sys     0m0.116s

$ perl6-j -e 'my $file = ""; for ^20000 {$file ~= "$_;"};'

real    0m10.312s
user    0m19.917s
sys     0m0.352s

The smartmatch makes it somewhat slower (but much slower for parrot):

$ perl6-m -e 'my $file = ""; for ^20000 {$file ~= "$_;"}; $file ~~ /(\d+) +% 
";"/;'

real    0m1.210s
user    0m1.140s
sys     0m0.064s

$ perl6-p -e 'my $file = ""; for ^20000 {$file ~= "$_;"}; $file ~~ /(\d+) +% 
";"/;'

real    0m12.436s
user    0m12.141s
sys     0m0.240s

$ perl6-j -e 'my $file = ""; for ^20000 {$file ~= "$_;"}; $file ~~ /(\d+) +% 
";"/;'

real    0m13.147s
user    0m25.122s
sys     0m0.428s

And now with say (STDOUT redirected to files, which have 20002 lines each) 
which makes it significantly slower:

$ perl6-m -e 'my $file = ""; for ^20000 {$file ~= "$_;"}; say $file ~~ /(\d+) 
+% ";"/;' > foo1

real    0m20.079s
user    0m19.217s
sys     0m0.776s

$ perl6-p -e 'my $file = ""; for ^20000 {$file ~= "$_;"}; say $file ~~ /(\d+) 
+% ";"/;' > foo2

real    1m58.058s
user    1m56.899s
sys     0m0.328s

$ perl6-j -e 'my $file = ""; for ^20000 {$file ~= "$_;"}; say $file ~~ /(\d+) 
+% ";"/;' > foo3

real    0m38.323s
user    0m59.948s
sys     0m0.536s

All in all I'd say that's reasonable for the time being. (Especially the times 
with JVM are nowhere near 4 minutes.) If you disagree, please reopen the ticket.

Reply via email to