Hey guys.<div><br></div><div>I had that looping problem when I was playing with Rakudo last year. It's not actually slow looping, it's slow lists. I presume it's the same fundamental problem now (although I really should upgrade and test), so I might as well demonstrate my generic workaround.</div>
<div><br></div><div><div>$ time perl6 -e 'my $x; for ^1000 { $x++}; say $x'</div><div>1000</div><div><br></div><div>real    0m6.533s</div><div>user    0m6.124s</div><div>sys     0m0.364s</div><div>$ time perl6 -e 'my $x; for ^10000 { $x++}; say $x'</div>
<div>10000</div><div><br></div><div>real    0m49.944s</div><div>user    0m48.359s</div><div>sys     0m1.140s</div><div>$ time perl6 -e 'my ($x, $a) = (0,0); while ($a < 10000) { $a++; $x++}; say $x'</div><div>10000</div>
<div><br></div><div>real    0m6.688s</div><div>user    0m6.204s</div><div>sys     0m0.408s</div></div><div><br></div><div>So instead of using ^ or .. there which requires a list to be built, I just manually assign and check a counter variable for perl6 looping<br>
<br></div><div>Rather ironically the Benchmark.pm6 distributed then with Rakudo was made somewhat useless by this problem, so I had to write my own replacement where I first benchmarked the overhead</div><div><br></div><div>
Cheers,</div><div>Rich</div><div><br><div class="gmail_quote">On Fri, Apr 29, 2011 at 4:14 PM, mattp <span dir="ltr"><<a href="mailto:mattp@cpan.org">mattp@cpan.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Alan,<br>
Chromatic wrote a more in depth comparison of Perl 5 and Rakudo benchmarks a while back:<br>
<br>
<a href="http://www.modernperlbooks.com/mt/2010/07/an-accurate-comparison-of-perl-5-and-rakudo-star.html" target="_blank">http://www.modernperlbooks.com/mt/2010/07/an-accurate-comparison-of-perl-5-and-rakudo-star.html</a><br>

<br>
Simple benchmarks aren't exactly fair when comparing the two. Though the 60 second loop was surprising to see, regardless of optimizations / lack there of.<br>
<br>
Cheers,<br>
Matt<div><div></div><div class="h5"><br>
<br>
On 04/29/2011 02:33 PM, arocker@Vex.Net wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I decided to get some numbers to add to last night's discussion. To test<br>
the basic overhead, I used a minimal command-line program.<br>
<br>
As a baseline, the system Perl, 5.10.1 returned the following:<br>
<br>
time perl -e ";"<br>
0.00 user 0.01 system 0:00.01 elapsed 100%CPU (0 avgtext + 0 avgdata<br>
   5712 maxresident)k  (When re-run, even the 1s disappeared.)<br>
    0 inputs + 0 outputs (0 major    + 419 minor)pagefaults 0 swaps<br>
<br>
Perl 6, run 3 times to eliminate the influence of Linux' aggressive caching:<br>
<br>
time ./perl6 -e ";"<br>
1.52 user 0.16 system 0:02.37 elapsed 70% CPU (0 avgtext + 0 avgdata<br>
263456 maxresident)k<br>
18384 inputs + 0 outputs (45 major+ 16487 minor)pagefaults 0 swaps<br>
<br>
time ./perl6 -e ";"<br>
1.13 user 0.06 system 0:01.33 elapsed 88% CPU (0 avgtext + 0 avgdata<br>
263440 maxresident)k<br>
     0 inputs + 0 outputs (0 major + 16531 minor)pagefaults 0 swaps<br>
<br>
time ./perl6 -e ";"<br>
1.25 user 0.14 system 0:01.51 elapsed 91% CPU (0 avgtext + 0 avgdata<br>
263440 maxresident)k<br>
     0 inputs + 0 outputs (0 major + 16531 minor)pagefaults 0 swaps<br>
<br>
(I'm at a loss to explain the increase on the 3rd try of Perl 6.)<br>
<br>
Giving the program something real to do seems to add very little work:<br>
<br>
time perl -e 'print "present\n";'<br>
present<br>
0.00 user 0.00 system 0:00.00 elapsed 0% CPU (0 avgtext + 0 avgdata<br>
   6096 maxresident)k<br>
     0 inputs + 0 outputs (0 major +   443 minor)pagefaults 0 swaps<br>
<br>
time ./perl6 -e "say 'present';"<br>
present<br>
  1.22 user 0.09 system 0:01.41 elapsed 92% CPU (0 avgtext + 0 avgdata<br>
263600 maxresident)k<br>
     0 inputs + 0 outputs (0 major + 16542 minor)pagefaults 0 swaps<br>
time ./perl6 -e "say 'present';"<br>
present<br>
  1.39 user 0.21 system 0:01.76 elapsed 90% CPU (0 avgtext + 0 avgdata<br>
263616 maxresident)k<br>
     0 inputs + 0 outputs (0 major + 16542 minor)pagefaults 0 swaps<br>
<br>
To see the effect of a reasonable number of arithmetic operations:<br>
<br>
time perl -e "my \$x; for (1..100000){\$x++}; print \"\$x\n\";"<br>
100000<br>
  0.01 user 0.00 system 0:00.02 elapsed 45% CPU (0 avgtext + 0 avgdata<br>
6352 maxresident)k<br>
    0 inputs + 0 outputs (0 major +   459 minor)pagefaults 0 swaps<br>
<br>
time ./perl6 -e "my \$x; for 1..100000 {\$x++}; say \"\$x\";"<br>
100000<br>
55.59 user 0.75 system 1:02.7 0elapsed 89% CPU (0 avgtext + 0 avgdata<br>
601952 maxresident)k<br>
   0 inputs + 0 outputs (0 major + 40452 minor)pagefaults 0 swaps<br>
<br>
Rather significant differences.<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
toronto-pm mailing list<br>
<a href="mailto:toronto-pm@pm.org" target="_blank">toronto-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/toronto-pm" target="_blank">http://mail.pm.org/mailman/listinfo/toronto-pm</a><br>
</blockquote>
<br>
_______________________________________________<br>
toronto-pm mailing list<br>
<a href="mailto:toronto-pm@pm.org" target="_blank">toronto-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/toronto-pm" target="_blank">http://mail.pm.org/mailman/listinfo/toronto-pm</a><br>
</div></div></blockquote></div><br></div>