in reply to Re: fast way to split and sum an input file
in thread fast way to split and sum an input file

I didn't think so. I tested to be sure:

use strict; use warnings; use Benchmark; my @data = map { map "$_\n", join ',', map int(rand(1000)), 0..130 } 0..1000; sub regexp { my $t; foreach (@data) { /^(?:[^,]+,){99}([^,]+),/; $t += $1; } return $t; } sub index_loop { my $t; my $p1; my $p2; my $i; foreach (@data) { $p1 = -1; for $i (1..99) { $p1 = index($_, ',', ++$p1); } $p2 = index($_, ',', ++$p1); $t += substr($_, $p1, $p2-$p1); } return $t; } print("regexp: ", regexp(), "\n"); print("index_loop: ", index_loop(), "\n"); Benchmark::cmpthese(-3, { regexp => \&regexp, index_loop => \&index_loop, });
regexp: 509845 index_loop: 509845 Rate index_loop regexp index_loop 12.5/s -- -51% regexp 25.6/s 104% --