Benchmark-Harness
view release on metacpan or search on metacpan
Harness/TraceHighRes.pm view on Meta::CPAN
use strict;
package Benchmark::Harness::TraceHighRes;
use base qw(Benchmark::Harness::Trace);
use Benchmark::Harness;
use Benchmark::Harness::Constants;
use vars qw($VERSION); $VERSION = sprintf("%d.%02d", q$Revision: 1.1 $ =~ /(\d+)\.(\d+)/);
### ###########################################################################
sub Initialize {
my $self = Benchmark::Harness::Trace::Initialize(@_);
$self->{_startTime} = Time::HiRes::time();
# Things we get for the ProcessInfo element:
#
# W32 Linux attr : meaning
# X X 'm' : virtual memory size (kilobytes)
# X 'r' : resident set size (kilobytes)
# X 'u' : user mode time (milliseconds)
# X 's' : kernel mode time (milliseconds)
# X 'x' : user + kernal time
# ? ? 't' : system time, since process started, from time()
# X 'p' : percent cpu used since process started
## from i686-linux-64int-ld
# 'euid' => 509,
# 'priority' => 0,
# 'wchan' => 0,
# 'cmndline' => '/usr/local/bin/perl5.8.3 test.pl ',
# 'fname' => 'perl5.8.3',
# 'cmajflt' => 29001,
# 'state' => 'run',
# 'pid' => 24077,
# 'cwd' => '/goto/big/stats/lib/perl/Benchmark',
# 'cminflt' => 10703,
# 'exec' => '/usr/local/bin/perl5.8.3',
# 'uid' => 509,
# 'cstime' => 7000,
# 'minflt' => 7084,
# 'pctcpu' => '0.00',
# 'suid' => 509,
# 'utime' => 0,
# 'pgrp' => 24077,
# 'start' => '1116131498',
# 'gid' => 509,
# 'ttydev' => '/dev/pts/8',
# 'fgid' => 509,
# 'pctmem' => '0.00',
# 'time' => 0,
# 'sess' => 26032,
# 'egid' => 509,
# 'size' => 7208960,
# 'ttynum' => 34824,
# 'stime' => 0,
# 'ctime' => 8000,
# 'sgid' => 509,
# 'flags' => 1048576,
# 'cutime' => 1000,
# 'majflt' => 436,
# 'fuid' => 509,
# 'ppid' => 26032,
# 'rss' => 5177344
if ( $^O ne 'MSWin32' ) { # Assume Linux, for now . . .
eval 'use Proc::ProcessTable';
die $@ if $@;
my $procProcessTbl = new Proc::ProcessTable('cache_ttys' => 1);
*Benchmark::Harness::Handler::TraceHighRes::reportTraceInfo =
sub {
my $self = shift;
my $processTable = $procProcessTbl->table;
my $processIdx = $self->[Benchmark::Harness::Handler::HNDLR_PROCESSIDX];
my $procInfo = $processTable->[$processIdx] if defined($processIdx);
# Our process idx is probably the same each time through . . .
unless ( ref($procInfo) && ($procInfo->{pid} == $$) ) {
my $processIdx = 0;
for ( @$processTable ) {
if ( $_->{pid} == $$ ) {
$procInfo = $_;
( run in 0.635 second using v1.01-cache-2.11-cpan-98e64b0badf )