#!/usr/bin/perl use strict; use warnings; use Benchmark qw(cmpthese timethese); cmpthese timethese(-2, { a => sub { arg('foobar'); }, a_s => sub { arg_shift('foobar'); }, a_a1 => sub { arg_assign1('foobar'); }, a_a2 => sub { arg_assign2('foobar'); }, na => sub { $_ = 'foobar'; noarg(); }, na2 => sub { $_ = 'foobar'; noarg2(); }, }); sub arg { length $_[0] } sub arg_shift { length shift } sub arg_assign1 { $_ = shift; length } sub arg_assign2 { my $x = shift; length $x } sub noarg { length $_ } sub noarg2 { length }