#!/usr/bin/perl ## spin-up hard-disk, init cache ;) Split(); IRS_while(); IRS_map(); #### use strict; use warnings; use Benchmark qw(cmpthese); my $count = -3; cmpthese($count, { 'Split' => \&Split, 'IRS_while' => \&IRS_while, 'IRS_map' => \&IRS_map, }); sub Split { local $/; my $document; open(FILE, 'removed.xml') or die "Error [$!]\n"; while () { $document .= $_ } my @lines = split('\|',$document); return @lines; } sub IRS_while { local $/ = '|'; my @lines; open(FILE, 'removed.xml') or die "Error [$!]\n"; while () { chomp; push @lines, $_; } return @lines; } sub IRS_map { local $/ = '|'; open(FILE, 'removed.xml') or die "Error [$!]\n"; my @lines = map {chomp; $_} (); return @lines; } __END__ Rate IRS_map Split IRS_while IRS_map 7682/s -- -17% -19% Split 9284/s 21% -- -3% IRS_while 9529/s 24% 3% -- #### Rate IRS_map Split IRS_while IRS_map 7682/s -- 0.83 0.81 Split 9284/s 1.21 -- 0.97 IRS_while 9529/s 1.24 1.03 -- #### my $removed = \ scalar read_file('removed.xml'); use File::Slurp; Rate IRS_map IRS_while Split IRS_map 16544/s -- -36% -49% IRS_while 25775/s 56% -- -21% Split 32686/s 98% 27% -- #### Rate IRS_map IRS_while Split IRS_map 16544/s -- 0.64 0.51 IRS_while 25775/s 1.56 -- 0.79 Split 32686/s 1.98 1.27 --