use Benchmark 'cmpthese'; cmpthese -1, { 'shift'=> sub { my $x=shift; my $y=shift; my $z=shift; return }, 'assign'=> sub { my ($x,$y,$z)=@_; }, }; __END__ Benchmark: running assign, shift, each for at least 1 CPU seconds... assign: 2 wallclock secs ( 1.23 usr) @ 505470.78/s (n=622740) shift: 3 wallclock secs ( 1.01 usr) @ 435373.52/s (n=440598) Rate shift assign shift 435374/s -- -14% assign 505471/s 16% --