use strict;
use warnings;
use Benchmark qw(cmpthese);
chomp( my @lines = <DATA> );
sub regExLines {
my ( $yes, $no );
for my $string (@lines) {
next if $string !~ /^\*.+/ or $string =~ /Created/;
if ( $string =~
/^(?>\*\s+(\w\w\w-\d\d-\d\d\d\d)\s+(\w+)\s+(\d+)\s+)(?!Created)/ )
{
$yes++;
}
else {
$no++;
}
}
}
sub splitLines {
my ( $yes, $no );
for my $string (@lines) {
next if $string !~ /^\*.+/ or $string =~ /Created/;
my ( undef, $date, $user, $change, $desc ) = split ' ', $string, 5;
if ( $desc !~ /^Created/ ) {
$yes++;
}
else {
$no++;
}
}
}
cmpthese(
-5,
{
regExLines => sub { regExLines() },
splitLines => sub { splitLines() },
}
);
# Rate regExLines splitLines
#splitLines 356059/s -- -6%
#regExLines 377659/s 6% --
__DATA__
* JAN-01-2001 bugsbunny 1234 Created Module
JAN-01-2001 bugsbunny 1234 Created Module
* DEC-12-2012 bugsbunny 5678 Modified Module
DEC-12-2012 bugsbunny 5678 Modified Module