Rate c_pp c_xs cbxs perl
c_pp 3.03e-02/s -- -97% -97% -98%
c_xs 1.07/s 3434% -- -1% -34%
cbxs 1.08/s 3453% 1% -- -33%
perl 1.61/s 5229% 51% 50% --
####
""|201407|"Jul|2014"|" "|"BLANK"|" "|" "|" "|"CAN01"|" "|" "|" "|" "|"09/09/9999 00:00:00"...
^
####
$ cat test.pl
use strict;
use warnings;
use Text::CSV_XS;
my $csv = Text::CSV_XS->new ({ binary => 1, sep_char => "|", auto_diag => 1 });
open my $fh, "<", "Proj20101111.csv" or die $!;
my @hdr = map { lc } @{$csv->getline ($fh)};
my %rec;
$csv->bind_columns (\@rec{@hdr});
my %count;
while ($csv->getline ($fh)) {
$count{$rec{client_id}}++;
}
printf "%-8s %7d\n", $_, $count{$_} for sort keys %count;
$ perl test.pl
104167 1001
116571 4004
BLANK 24024