in reply to Re: Needed Performance improvement in reading and fetching from a file
in thread Needed Performance improvement in reading and fetching from a file

I wondered how a plain regex would fare. Probably not enough in it to be significant.
#!/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~200806 +23~RC425484~IFSCSEND001 ~Remiter Details ~10000 +07 ~TEST RTGS TRF7 ~ + ~ ~ ~RTGS~REVOSN OIL CORPOR +ATION ~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];}}, 'regex' => sub {my @refnos; for (@data){push @refnos +, /~([^~]+)~/;}}, } );
Rate Full split Limited split Optimized split + regex Full split 23.3/s -- -81% -90% + -91% Limited split 120/s 413% -- -51% + -54% Optimized split 244/s 946% 104% -- + -7% regex 262/s 1024% 119% 7% + --