aboutsummaryrefslogtreecommitdiff
path: root/perf/vg_perf.in
diff options
context:
space:
mode:
authornjn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9>2005-12-13 16:54:58 +0000
committernjn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9>2005-12-13 16:54:58 +0000
commitecb474412fd6bc406345a5a855e6743f8f2c9747 (patch)
tree05dfb0b3908d11a37c10b0758ef475f20434866a /perf/vg_perf.in
parentc870d18010567ea6318af22922a9f4044c1ad897 (diff)
downloadvalgrind-ecb474412fd6bc406345a5a855e6743f8f2c9747.tar.gz
Abort the performance timings if any of the programs fail,
and record info in perf.{cmd,stdout,stderr} to allow diagnosis. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5328 a5019735-40e9-0310-863c-91ae7b9d1cf9
Diffstat (limited to 'perf/vg_perf.in')
-rw-r--r--perf/vg_perf.in18
1 files changed, 15 insertions, 3 deletions
diff --git a/perf/vg_perf.in b/perf/vg_perf.in
index 919915201..e0719eefe 100644
--- a/perf/vg_perf.in
+++ b/perf/vg_perf.in
@@ -216,7 +216,13 @@ sub read_vgperf_file($)
# propagate a Ctrl-C enabling us to quit.
sub mysystem($)
{
- (system($_[0]) != 2) or exit 1; # 2 is SIGINT
+ my ($cmd) = @_;
+ my $retval = system($cmd);
+ if ($retval == 2) {
+ exit 1;
+ } else {
+ return $retval;
+ }
}
# Run program N times, return the best wall-clock time.
@@ -225,8 +231,14 @@ sub time_prog($$)
my ($cmd, $n) = @_;
my $tmin = 999999;
for (my $i = 0; $i < $n; $i++) {
- my $out = `$cmd 2>&1 1>/dev/null`;
- $out =~ /walltime: ([\d\.]+)s/;
+ mysystem("echo '$cmd' > perf.cmd");
+ my $retval = mysystem("$cmd > perf.stdout 2> perf.stderr");
+ (0 == $retval) or
+ die "\n*** Command returned non-zero: $cmd\n"
+ . "\n*** See perf.{cmd,stdout,stderr} to diagnose what went wrong.\n";
+ my $out = `cat perf.stderr`;
+ ($out =~ /walltime: ([\d\.]+)s/) or
+ die "\n*** missing walltime in perf.stderr\n";
$tmin = $1 if ($1 < $tmin);
}
return $tmin;