#!/usr/bin/perl use strict; use warnings; use Benchmark qw(:all) ; # Set up an array of data to test my $data = '0906928472847292INR~UTRIR8709990166~ 700000~INR~20080623~RC425484~IFSCSEND001 ~Remiter Details ~1000007 ~TEST RTGS TRF7 ~ ~ ~ ~RTGS~REVOSN OIL CORPORATION ~IOCL ~09065010889~0906501088900122INR~ 7~ 1~ 1'; my @data; push @data, $data for 1 .. 1000; cmpthese(1000, { 'Full split' => sub {my @refnos; for (@data){my @splitted = split(/~/,$_); push(@refnos,$splitted[1]);}}, 'Limited split' => sub {my @refnos; for (@data){my @splitted = split(/~/,$_,3); push(@refnos,$splitted[1]);}}, 'Optimized split' => sub {my @refnos; for (@data){push @refnos, (split(/~/,$_,3))[1];}}, }); #### Rate Full split Limited split Optimized split Full split 23.1/s -- -82% -93% Limited split 127/s 452% -- -63% Optimized split 343/s 1387% 169% --