diff options
author | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2011-08-28 10:45:19 +0000 |
---|---|---|
committer | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2011-08-28 10:45:19 +0000 |
commit | 117398996edfa280b78e8c606358e294219cf8e9 (patch) | |
tree | 67e364e81066fc82ce438f2c64e8417cd77c7cdb /app/x11perf/x11perfcomp.in | |
parent | d832106609ea3fa7bc180e847fa817711caf9314 (diff) |
Update to x11perf 1.5.4
Diffstat (limited to 'app/x11perf/x11perfcomp.in')
-rw-r--r-- | app/x11perf/x11perfcomp.in | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/app/x11perf/x11perfcomp.in b/app/x11perf/x11perfcomp.in new file mode 100644 index 000000000..498bbf0df --- /dev/null +++ b/app/x11perf/x11perfcomp.in @@ -0,0 +1,108 @@ +#! /bin/sh +# +# Collects multiple outputs of x11perf. Just feed it a list of files, each +# containing the output from an x11perf run, and this shell will extract the +# object/second information and show it in tabular form. An 80-column line +# is big enough to compare 4 different servers. +# +# This script normally uses the results from $1 to extract the test label +# descriptions, so you can run x11perf on a subset of the test and then +# compare the results. But note that x11perffill requires the labels file +# to be a superset of the x11perf results file. If you run into an ugly +# situation in which none of the servers completes the desired tests +# (quite possible on non-DEC servers :), you can use -l <filename> as $1 and +# $2 to force x11perfcomp to use the labels stored in file $2. (You can run +# x11perf with the -labels option to generate such a file.) +# +# Mark Moraes, University of Toronto <moraes@csri.toronto.edu> +# Joel McCormack, DEC Western Research Lab <joel@decwrl.dec.com> +# + +PATH="@x11perfcompdir@:/bin:/usr/bin:$PATH" +export PATH + +MKTEMP="@MKTEMP@" + +set -e +if [ "x$MKTEMP" != "x" ] && [ -x "$MKTEMP" ] ; then + tmp=`$MKTEMP -p /tmp -d rates.XXXXXX` + if [ "x$tmp" = "x" ]; then exit 1 ; fi +else + tmp=${TMPDIR-/tmp}/rates.$$ + mkdir $tmp || exit 1 +fi +trap "rm -rf $tmp" 0 1 2 15 +mkdir $tmp/rates +ratio= +allfiles= +# Include relative rates in output? Report only relative rates? +case $1 in +-r|-a) + ratio=1 + shift; + ;; +-ro) + ratio=2 + shift; + ;; +esac +# Get either the provided label file, or construct one from all the +# files given. +case $1 in +-l) cp $2 $tmp/labels + shift; shift + ;; +*) for file in "$@"; do + awk '$2 == "reps" || $2 == "trep" { print $0; next; }' $file | + sed 's/^.*: //' | + sed 's/ /_/g' | + awk 'NR > 1 { printf ("%s %s\n", prev, $0); } \ + { prev = $0; }' + done | tsort 2>/dev/null | sed 's/_/ /g' > $tmp/labels + ;; +esac +# Go through all files, and create a corresponding rate file for each +n=1 +for i +do +# Get lines with average numbers, fill in any tests that may be missing +# then extract the rate field + base=`basename $i` + (echo " $n " + echo '--------' + awk '$2 == "reps" || $2 == "trep" { \ + line = $0; \ + next; \ + } \ + NF == 0 && line != "" { \ + print line; \ + line=""; \ + next; \ + } \ + ' $i > $tmp/$n.avg + fillblnk $tmp/$n.avg $tmp/labels | + sed 's/( *\([0-9]*\)/(\1/' | + awk '$2 == "reps" || $2 == "trep" { \ + n = substr($6,2,length($6)-7); \ + printf "%8s\n", n; \ + }' + ) > $tmp/rates/$n + echo "$n: $i" + allfiles="$allfiles$tmp/rates/$n " + n=`expr $n + 1` +done +case x$ratio in +x) + ratio=/bin/cat + ;; +x1) + ratio="perfboth $n" + ;; +*) + ratio="perfratio $n" + ;; +esac +echo '' +(echo Operation; echo '---------'; cat $tmp/labels) | +paste $allfiles - | sed 's/ / /g' | $ratio +rm -rf $tmp |