use Benchmark 'cmpthese'; my $str = 'a' x 1_000_000; cmpthese( -2, { substr_lvalue => sub { substr_lvalue( "$str" ) }, substr_mod => sub { substr_mod( "$str" ) }, } ); sub substr_lvalue { substr( $_[0], 0, 1 ) = '' while $_[0]; return; } sub substr_mod { substr( $_[0], 0, 1, '' ) while $_[0]; return; } #### Rate substr_lvalue substr_mod substr_lvalue 2.58/s -- -50% substr_mod 5.16/s 101% --