diff options
author | njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> | 2005-12-13 16:54:58 +0000 |
---|---|---|
committer | njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> | 2005-12-13 16:54:58 +0000 |
commit | ecb474412fd6bc406345a5a855e6743f8f2c9747 (patch) | |
tree | 05dfb0b3908d11a37c10b0758ef475f20434866a /perf/vg_perf.in | |
parent | c870d18010567ea6318af22922a9f4044c1ad897 (diff) | |
download | valgrind-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.in | 18 |
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; |