Beefy Boxes and Bandwidth Generously Provided by pair Networks vroom
P is for Practical
 
PerlMonks  

Re: Benchmark results | localizing $INPUT_RECORD_SEPARATOR vs spliting contents of file on $INPUT_RECORD_SEPARATOR

by MidLifeXis (Prior)
on Nov 06, 2012 at 13:32 UTC ( #1002472=note: print w/ replies, xml ) Need Help??


in reply to Benchmark results | localizing $INPUT_RECORD_SEPARATOR vs spliting contents of file on $INPUT_RECORD_SEPARATOR

Your IRS_while(), does not return the same information as the other two subroutines. Push returns the size of the array after update. Assignment returns the assigned value. Is it possible that you are getting bogus results due to that?

#!/usr/bin/perl use strict; use warnings; use Benchmark qw(cmpthese); my $count = -100; cmpthese($count, { 'Split' => sub { my $document; open(FILE, 'removed.xml') or die "Error [$!]\n"; while (<FILE>) { $document .= $_ } my @lines = split('\|',$document); return @lines; }, 'IRS_while' => sub { local $/ = '|'; my @lines; open(FILE, 'removed.xml') or die "Error [$!]\n"; while (<FILE>) { chomp; push @lines, $_; } return @lines; }, 'IRS_map' => sub { local $/ = '|'; open(FILE, 'removed.xml') or die "Error [$!]\n"; my @lines = map {chomp; $_} (<FILE>); return @lines; }, });

Results:

Rate IRS_map Split IRS_while IRS_map 9804/s -- -24% -27% Split 12876/s 31% -- -4% IRS_while 13399/s 37% 4% --
and
This is perl 5, version 12, subversion 3 (v5.12.3) built for MSWin32-x +86-multi-thread

Benchmark newbie, so I am certain that I will be corrected if I have also misapplied the tool :-)

Update: To tie into a comment by 2teez, my versions of this seem to be spending a large amount of time in open (32% of total time) and readline (18% of total time) -- a whopping 50% of the total time, with those two items being the top two runners when sorted by exclusive time under Devel::NYTProf.

--MidLifeXis


Comment on Re: Benchmark results | localizing $INPUT_RECORD_SEPARATOR vs spliting contents of file on $INPUT_RECORD_SEPARATOR
Select or Download Code
Re^2: Benchmark results | localizing $INPUT_RECORD_SEPARATOR vs spliting contents of file on $INPUT_RECORD_SEPARATOR
by Anonymous Monk on Nov 06, 2012 at 14:24 UTC
    -100 is too long
    #!/usr/bin/perl ## spin-up hard-disk, init cache ;) Split(); IRS_while(); IRS_map();

    irate/tyerate

    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 --

    And from memory

    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% --

    irate/tyerate

    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 --

      Ok, I can agree with that - I don't see how that changes the results. Changed to -3.

      Rate IRS_map Split IRS_while IRS_map 9659/s -- -26% -28% Split 13017/s 35% -- -3% IRS_while 13379/s 39% 3% --

      Considering that a lot of time is in I/O (open and readline), I wonder if the differences between our results are due more to I/O characteristics on our systems than to the algorithm itself.

      --MidLifeXis

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1002472]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (14)
As of 2014-04-17 20:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (454 votes), past polls