home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / usr / X11R6 / bin / x11perfcomp < prev    next >
Text File  |  1999-09-03  |  3KB  |  96 lines

  1. #! /bin/sh
  2. #
  3. # $XFree86: xc/programs/x11perf/x11pcomp.cpp,v 1.1.1.1.12.3 1999/07/22 14:21:29 hohndel Exp $
  4. #
  5. # Collects multiple outputs of x11perf.  Just feed it a list of files, each
  6. # containing the output from an x11perf run, and this shell will extract the
  7. # object/second information and show it in tabular form.  An 80-column line
  8. # is big enough to compare 4 different servers.
  9. #
  10. # This script normally uses the results from $1 to extract the test label
  11. # descriptions, so you can run x11perf on a subset of the test and then
  12. # compare the results.  But note that x11perffill requires the labels file
  13. # to be a superset of the x11perf results file.  If you run into an ugly
  14. # situation in which none of the servers completes the desired tests 
  15. # (quite possible on non-DEC servers :), you can use -l <filename> as $1 and
  16. # $2 to force x11perfcomp to use the labels stored in file $2.  (You can run
  17. # x11perf with the -labels option to generate such a file.)
  18. #
  19. # Mark Moraes, University of Toronto <moraes@csri.toronto.edu>
  20. # Joel McCormack, DEC Western Research Lab <joel@decwrl.dec.com>
  21. #
  22. # $TOG: x11pcomp.cpp /main/7 1997/04/14 09:15:45 barstow $
  23.  
  24. PATH=/usr/X11R6/lib/X11/x11perfcomp:.:$PATH
  25. export PATH
  26.  
  27. set -e
  28. tmp=${TMPDIR-/tmp}/rates.$$
  29. trap "rm -rf $tmp" 0 1 2 15
  30. mkdir $tmp || exit 1
  31. mkdir $tmp/rates
  32. ratio=
  33. allfiles=
  34. # Include relative rates in output?  Report only relative rates?
  35. case $1 in
  36. -r|-a)
  37.     ratio=1
  38.     shift;
  39.     ;;
  40. -ro)
  41.     ratio=2
  42.     shift;
  43.     ;;
  44. esac
  45. # Get either the provided label file, or construct one from all the
  46. # files given.
  47. case $1 in
  48. -l)    cp $2 $tmp/labels
  49.     shift; shift
  50.     ;;
  51. *)    for file in "$@"; do
  52.         awk '$2 == "reps" || $2 == "trep" { print $0; next; }' $file |
  53.          sed 's/^.*: //' |
  54.          sed 's/ /_/g' |
  55.          awk 'NR > 1     { printf ("%s %s\n", prev, $0); }                 { prev = $0; }'
  56.  
  57.     done | tsort 2>/dev/null | sed 's/_/ /g' > $tmp/labels
  58.     ;;
  59. esac
  60. # Go through all files, and create a corresponding rate file for each
  61. n=1
  62. for i
  63. do
  64. # Get lines with average numbers, fill in any tests that may be missing
  65. # then extract the rate field
  66.     base=`basename $i`
  67.     (echo "     $n  "
  68.      echo '--------'
  69.      awk '$2 == "reps" || $2 == "trep" {         line = $0;         next;         }         NF == 0 && line != "" {         print line;         line="";         next;         }      ' $i > $tmp/$n.avg
  70.      fillblnk $tmp/$n.avg $tmp/labels |
  71.      sed 's/( *\([0-9]*\)/(\1/'   |
  72.      awk '$2 == "reps" || $2 == "trep" {                          n = substr($6,2,length($6)-7);                         printf "%8s\n", n;                             }'
  73.  
  74.  
  75.  
  76.     ) > $tmp/rates/$n
  77.     echo "$n: $i"
  78.     allfiles="$allfiles$tmp/rates/$n "
  79.     n=`expr $n + 1`
  80. done
  81. case x$ratio in
  82. x)
  83.     ratio=/bin/cat
  84.     ;;
  85. x1)
  86.     ratio="perfboth $n"
  87.     ;;
  88. *)
  89.     ratio="perfratio $n"
  90.     ;;
  91. esac
  92. echo ''
  93. (echo Operation; echo '---------'; cat $tmp/labels) |
  94. paste $allfiles - | sed 's/    /  /g' | $ratio
  95. rm -rf $tmp
  96.