use strict; use warnings; use Benchmark qw( cmpthese ); my @strings = qw( USERID1|2215|Jones| USERID1|1000|Jones| USERID3|1495|Dole| USERID2|2500|Francis| USERID2|1500|Francis| ); cmpthese( -1, { outside => sub { my ( $x, $y, $z ); for (@strings) { ( $x, $y, $z ) = split /\|/; } }, outside2 => sub { my ( $x, $y, $z ); for (@strings) { ( $x, $y, $z ) = split /\|/, $_, 3; } }, inside => sub { for (@strings) { my ( $x, $y, $z ) = split /\|/; } }, inside2 => sub { for (@strings) { my ( $x, $y, $z ) = split /\|/, $_, 3; } }, } ); #### $ perl bench_inside_outside.pl Rate outside outside2 inside inside2 outside 90269/s -- -20% -40% -51% outside2 113390/s 26% -- -25% -39% inside 151060/s 67% 33% -- -19% inside2 185735/s 106% 64% 23% --