summaryrefslogtreecommitdiff
path: root/app/x11perf/x11perfcomp.in
diff options
context:
space:
mode:
authorMatthieu Herrb <matthieu@cvs.openbsd.org>2011-08-28 10:45:19 +0000
committerMatthieu Herrb <matthieu@cvs.openbsd.org>2011-08-28 10:45:19 +0000
commit117398996edfa280b78e8c606358e294219cf8e9 (patch)
tree67e364e81066fc82ce438f2c64e8417cd77c7cdb /app/x11perf/x11perfcomp.in
parentd832106609ea3fa7bc180e847fa817711caf9314 (diff)
Update to x11perf 1.5.4
Diffstat (limited to 'app/x11perf/x11perfcomp.in')
-rw-r--r--app/x11perf/x11perfcomp.in108
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