use strict; use Benchmark; sub woH { my %a = ( -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, -a => 1, ); return; } sub wH { my %a = ( '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, '-a' => 1, ); return; } timethese 100000, { woH => \&woH, wH => \&wH, } __END__ Benchmark: timing 100000 iterations of wH, woH... wH: 1 wallclock secs ( 1.45 usr + 0.00 sys = 1.45 CPU) @ 68917.99/s (n=100000) woH: 3 wallclock secs ( 2.39 usr + 0.00 sys = 2.39 CPU) @ 41893.59/s (n=100000) Benchmark: timing 100000 iterations of wH, woH... wH: 2 wallclock secs ( 1.47 usr + 0.01 sys = 1.48 CPU) @ 67521.94/s (n=100000) woH: 2 wallclock secs ( 2.32 usr + 0.02 sys = 2.34 CPU) @ 42735.04/s (n=100000) Benchmark: timing 100000 iterations of wH, woH... wH: 1 wallclock secs ( 1.42 usr + 0.00 sys = 1.42 CPU) @ 70472.16/s (n=100000) woH: 3 wallclock secs ( 2.56 usr + 0.00 sys = 2.56 CPU) @ 39077.76/s (n=100000)