home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
- #
- # $XFree86: xc/programs/x11perf/x11pcomp.cpp,v 1.1.1.1.12.3 1999/07/22 14:21:29 hohndel Exp $
- #
- # 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>
- #
- # $TOG: x11pcomp.cpp /main/7 1997/04/14 09:15:45 barstow $
-
- PATH=/usr/X11R6/lib/X11/x11perfcomp:.:$PATH
- export PATH
-
- set -e
- tmp=${TMPDIR-/tmp}/rates.$$
- trap "rm -rf $tmp" 0 1 2 15
- mkdir $tmp || exit 1
- 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
-