dotime.pl: aid in command timing
Johan Vromans
jv at mh.nl
Thu Jan 4 09:09:36 AEST 1990
The following perl script aids in timing commands.
The command is run a number of times, and the avarage statistics are
shown together with the statistics of each pass.
Example:
$ dotime 5 ls -l
Running "ls -l" 1 2 3 4 5 done
Avg Pass 1 2 3 4 5
----- ------- ----- ----- ----- -----
real 1.8 3.7 1.4 1.4 1.2 1.2
user 0.6 0.7 0.6 0.6 0.6 0.5
sys 0.6 0.9 0.6 0.5 0.5 0.6
Have fun!
Johan
------ begin of dotime -- ascii -- complete ------
#!/usr/bin/perl
# @(#)@ dotime 1.1 - dotime
# This program requires perl version 3.0, patchlevel 4 or later.
# Copyright 1990 Johan Vromans, no rights reserved.
# Usage: dotime repeat command
die "usage: $0 <repeat> <command>\nstopped" unless $#ARGV >= 1;
$repeat = shift (@ARGV);
die "invalid repeat: $repeat, stopped"
unless (($repeat > 0) && ($repeat < 999));
$command = "@ARGV";
$tt_real = $tt_user = $tt_sys = 0;
@t_real = @t_user = @t_sys = ();
$| = 1;
for ($pass = 1; $pass <= $repeat; $pass++) {
print STDOUT ($pass == 1) ? "Running \"$command\" 1 " : "$pass ";
open (TIMES, "/bin/time $command 2>&1 |") ||
die ("cannot open /bin/time $command 2>&1 |");
while (<TIMES>) {
if (/^real\s+(\d+\.\d+)\n/) {
push (@t_real, 0+$1);
$tt_real += $1;
}
elsif (/^user\s+(\d+\.\d+)/) {
push (@t_user, 0+$1);
$tt_user += $1;
}
elsif (/^sys\s+(\d+\.\d+)/) {
push (@t_sys , 0+$1);
$tt_sys += $1;
}
}
close (TIMES);
}
$| = 0;
print " done\n";
print "\n Avg Pass 1";
for ($pass = 2; $pass <= $repeat; $pass++) {
printf "%6d", $pass;
}
print "\n";
print " ----- -------";
for ($pass = 2; $pass <= $repeat; $pass++) {
print " -----";
}
print "\n";
for $arg ("real","user","sys ") {
eval ("printf \"$arg %5.1f \", \$tt_$arg/$repeat;".
"for (\$pass = 1; \$pass <= $repeat; \$pass++) {".
"printf \"%6.1f\", \$t_$arg[\$pass-1];".
"}".
"print \"\n\";");
}
------ end of dotime -- ascii -- complete ------
--
Johan Vromans jv at mh.nl via internet backbones
Multihouse Automatisering bv uucp: ..!{uunet,hp4nl}!mh.nl!jv
Doesburgweg 7, 2803 PL Gouda, The Netherlands phone/fax: +31 1820 62944/62500
------------------------ "Arms are made for hugging" -------------------------
More information about the Alt.sources
mailing list