#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw( cmpthese );
my $str = ( ('X'x15) . ',' ) x 3;
cmpthese(
-1,
{
# using regex
's///' => sub {
my ( $first ) = $str =~ m/(.*?),/;
},
# using split without limit
'split_unl' => sub {
my ( $first ) = split( m/,/, $str );
},
# using split with limit
'split_lim' => sub {
my ( $first ) = split( m/,/, $str, 2 );
},
# using split with limit and slice for scalar assignment
'split_lim_sca' => sub {
my $first = ( split( m/,/, $str, 2 ) )[0];
},
}
)
my result:
Rate s/// split_lim split_unl split
+_lim_sca
s/// 577066/s -- -13% -13%
+ -15%
split_lim 663032/s 15% -- -0%
+ -2%
split_unl 663629/s 15% 0% --
+ -2%
split_lim_sca 679348/s 18% 2% 2%
+ --
Or did I miss something?
|