use strict;
use warnings;
use Benchmark;
my @a = 1..1000000;
timethese (10000000,{a=>q{map {1} @a},b=>q[map $_*=1, @a],c=>q[$_*=1 for @a] });
####
a: 1 wallclock secs ( 0.75 usr + 0.00 sys = 0.75 CPU) @ 13368983.96/s (n=10000000)
b: 0 wallclock secs ( 0.75 usr + 0.00 sys = 0.75 CPU) @ 13368983.96/s (n=10000000)
c: 2 wallclock secs ( 1.70 usr + 0.00 sys = 1.70 CPU) @ 5878894.77/s (n=10000000)
####
use strict;
use warnings;
use Benchmark;
timethese ( 10000, {
"idiomatic" => sub { my @array = 1..1000; $_ +=2 for @array; },
"map" => sub { my @array = 1..1000; map { $_ +=2;} @array; }
} );
####
Benchmark: timing 10000 iterations of idiomatic, map...
idiomatic: 3 wallclock secs ( 3.25 usr + 0.01 sys = 3.26 CPU) @ 3067.48/s (n=10000)
map: 6 wallclock secs ( 5.91 usr + 0.01 sys = 5.92 CPU) @ 1689.19/s (n=10000)
####
idiomatic: 2 wallclock secs ( 1.59 usr + 0.00 sys = 1.59 CPU) @ 628.93/s (n=10000)
map: 3 wallclock secs ( 2.88 usr + 0.00 sys = 2.88 CPU) @ 347.22/s (n=10000)
####
Benchmark: timing 10000 iterations of idiomatic, map...
idiomatic: 2 wallclock secs ( 0.89 usr + 0.00 sys = 0.89 CPU) @ 11235.96/s (n=10000)
map: 3 wallclock secs ( 1.70 usr + 0.00 sys = 1.70 CPU) @ 5882.35/s (n=10000)
####
Benchmark: timing 10000 iterations of idiomatic, map...
idiomatic: 1 wallclock secs ( 1.25 usr + 0.00 sys = 1.25 CPU) @ 8012.82/s (n=10000)
map: 3 wallclock secs ( 2.31 usr + 0.00 sys = 2.31 CPU) @ 4330.88/s (n=10000)
####
Benchmark: timing 10000 iterations of idiomatic, map...
idiomatic: 1 wallclock secs ( 1.01 usr + 0.00 sys = 1.01 CPU) @ 9861.93/s (n=10000)
map: 2 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 4819.28/s (n=10000)