The stupid question is the question not asked PerlMonks

### Re^4: counting backward

by BrowserUk (Pope)
 on Mar 04, 2013 at 03:28 UTC ( #1021568=note: print w/replies, xml ) Need Help??

in reply to Re^3: counting backward

There are still plenty more ways to skin that cat :)

Why subtract and add; when you can just subtract. And why compare to zero when it is unnecessary:

```#! perl
use strict;
use warnings;
use Benchmark qw( cmpthese );

my \$n                  = 1e6;
my \$foreach_loop_total =   0;
my \$c_for_loop_total   =   0;
my \$while_loop_total   =   0;
my \$while_loop_total2   =   0;

cmpthese 100, {
foreach_loop => \&foreach_loop,
c_for_loop   => \&c_for_loop,
while_loop   => \&while_loop,
while_loop2   => \&while_loop2,
};

print "\\$foreach_loop_total = \$foreach_loop_total\n";
print "\\$c_for_loop_total   = \$c_for_loop_total\n";
print "\\$while_loop_total   = \$while_loop_total\n";
print "\\$while_loop_total2  = \$while_loop_total2\n";

sub foreach_loop {
\$foreach_loop_total -= \$_ for -\$n .. 0;
}

sub c_for_loop {
for (my \$j = \$n; \$j >= 0; --\$j) {
\$c_for_loop_total += \$j;
}
}

sub while_loop {
my \$n = \$n;
\$while_loop_total += \$n-- while \$n;
}

sub while_loop2 {
use integer;
my \$n = \$n;
\$while_loop_total2 += \$n-- while \$n;
}

__END__
C:\test>junk
Rate   c_for_loop   while_loop  while_loop2 foreach_loo
+p
c_for_loop   4.94/s           --         -22%         -39%         -44
+%
while_loop   6.31/s          28%           --         -22%         -28
+%
while_loop2  8.07/s          63%          28%           --          -8
+%
foreach_loop 8.76/s          77%          39%           8%           -
+-
\$foreach_loop_total = 50000050000000
\$c_for_loop_total   = 50000050000000
\$while_loop_total   = 50000050000000
\$while_loop_total2  = 50000050000000

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Create A New User
Node Status?
node history
Node Type: note [id://1021568]
help
Chatterbox?

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (13)
As of 2017-03-29 13:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Should Pluto Get Its Planethood Back?

Results (351 votes). Check out past polls.