|
From: <sv...@va...> - 2005-12-13 16:55:11
|
Author: njn
Date: 2005-12-13 16:54:58 +0000 (Tue, 13 Dec 2005)
New Revision: 5328
Log:
Abort the performance timings if any of the programs fail,
and record info in perf.{cmd,stdout,stderr} to allow diagnosis.
Modified:
trunk/perf/vg_perf.in
Modified: trunk/perf/vg_perf.in
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/perf/vg_perf.in 2005-12-13 16:38:55 UTC (rev 5327)
+++ trunk/perf/vg_perf.in 2005-12-13 16:54:58 UTC (rev 5328)
@@ -216,7 +216,13 @@
# propagate a Ctrl-C enabling us to quit.
sub mysystem($)=20
{
- (system($_[0]) !=3D 2) or exit 1; # 2 is SIGINT
+ my ($cmd) =3D @_;
+ my $retval =3D system($cmd);
+ if ($retval =3D=3D 2) {=20
+ exit 1;=20
+ } else {
+ return $retval;
+ }
}
=20
# Run program N times, return the best wall-clock time.
@@ -225,8 +231,14 @@
my ($cmd, $n) =3D @_;
my $tmin =3D 999999;
for (my $i =3D 0; $i < $n; $i++) {
- my $out =3D `$cmd 2>&1 1>/dev/null`;
- $out =3D~ /walltime: ([\d\.]+)s/;
+ mysystem("echo '$cmd' > perf.cmd");
+ my $retval =3D mysystem("$cmd > perf.stdout 2> perf.stderr");
+ (0 =3D=3D $retval) or=20
+ die "\n*** Command returned non-zero: $cmd\n"
+ . "\n*** See perf.{cmd,stdout,stderr} to diagnose what wen=
t wrong.\n";
+ my $out =3D `cat perf.stderr`;
+ ($out =3D~ /walltime: ([\d\.]+)s/) or=20
+ die "\n*** missing walltime in perf.stderr\n";
$tmin =3D $1 if ($1 < $tmin);
}
return $tmin;
|