use Benchmark;
@base=qw/one two three four five six seven/;
timethese(1_000_000,{
'$'=>sub {($s1,$s2,$s3,$s4,$s5,$s6,$s7)=@base;},
'@'=>sub{@s=@base;}
});
####
Benchmark: timing 1000000 iterations of $, @...
$: 3 wallclock secs ( 2.86 usr + 0.00 sys = 2.86 CPU)
@ 34 +9650.35/s (n=1000000)
@: 11 wallclock secs (10.16 usr + 0.00 sys = 10.16 CPU)
@ 98 +425.20/s (n=1000000)
####
use Benchmark;
my $sub=eval 'sub {('.join(',',map{'$s'.$_}1..1000).')=@base}';
@base=(1..1_000);
timethese(1_000_000,{
'$'=>$sub,
'@'=>sub{@s=@base;}
});
####
Benchmark: timing 1000000 iterations of $, @...
$: 131 wallclock secs (130.77 usr + 0.00 sys = 130.77 CPU)
@ 7647.01/s (n=1000000)
@: 149 wallclock secs (149.56 usr + 0.00 sys = 149.56 CPU)
@ 6686.28/s (n=1000000)