Linux::Smaps

Torsten Förtsch <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
Hi,

after having been told by Ævar that Linux::Smaps is really slow I tuned it a
bit. Here is what I get. "new" is version 0.07, "old" is 0.06:

perl -MBenchmark=:all,:hireswallclock -MData::Dumper -e '
  sub tm {
    my ($title)=@_;
    if( my $pid=open my $fh, "-|" ) {
      local $/;
      my $s=readline $fh;
      $s=~s/\A(.+\n)//;
      print $1;
      my $VAR1;
      return eval $s;
    } else {
      require Linux::Smaps;
      print Dumper +timethis -20, sub {Linux::Smaps->new->all}, $title;
      exit 0;
    }
  }
  my %res=(old=>tm "old");
  unshift @INC, "lib";
  $res{new}=tm "new"; cmpthese \%res
'
       old: 20.9829 wallclock secs (20.49 usr +  0.45 sys = 20.94 CPU) @ 70.87/s (n=1484)
       new: 21.0381 wallclock secs (19.09 usr +  1.92 sys = 21.01 CPU) @ 322.42/s (n=6774)
      Rate  old  new
old 70.9/s   -- -78%
new  322/s 355%   --

Meanwhile Ævar uploaded his own quite specialized smaps parser
(Linux::Smaps::Tiny) to CPAN. Here is what I get in comparison:

perl -Ilib -MLinux::Smaps -MLinux::Smaps::Tiny \
     -MBenchmark=:all,:hireswallclock -e '
  cmpthese timethese -5, {
    tiny=>sub{Linux::Smaps::Tiny::get_smaps_summary},
    smaps=>sub{scalar Linux::Smaps->new->all}
  }
'
Benchmark: running smaps, tiny for at least 5 CPU seconds...
     smaps: 5.0982 wallclock secs ( 4.56 usr +  0.47 sys =  5.03 CPU) @ 365.81/s (n=1840)
      tiny: 5.51047 wallclock secs ( 4.63 usr +  0.83 sys =  5.46 CPU) @ 591.58/s (n=3230)
       Rate smaps  tiny
smaps 366/s    --  -38%
tiny  592/s   62%    --

Torsten Förtsch

-- 
Need professional modperl support? Hire me! (http://foertsch.name)

Like fantasy? http://kabatinte.net
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.