1 X11PERF 
X11 server performance test program

SYNOPSIS

 $ x11perf [-option ...]

2 DESCRIPTION
The x11perf
program runs one or more performance tests and reports timings of the
operations.
   
Many graphics benchmarks assume that the graphics device is used to display the
output of a single fancy graphics application, and that the user gets his work
done on some other device, like a terminal.  Such benchmarks usually measure
drawing speed for lines, polygons, text, etc.
   
Since workstations are not used as standalone graphics engines, but as
super-terminals,  x11perf 
measures window management performance as well as
traditional graphics performace.  
x11perf 
includes benchmarks for the time it
takes to create and map windows (as when you start up an application); to map a
pre-existing set of windows onto the screen (as when you deiconify an
application or pop up a menu); and to rearrange windows (as when you slosh
windows to and fro trying to find the one you want).
   
x11perf 
also measures graphics performance for operations not normally used in
standalone graphics displays, but are nonetheless used frequently by X
applications.  Such operations include CopyPlane (used by the DEC PostScript
previewer), scrolling (used in text windows), and various stipples and tiles
(used for CAD and half-toning, respectively).
   
x11perf 
DOES NOT attempt to whittle down measurements to a single ``HeXStones''
number.  
We consider such numbers to be uninformative at best and misleading at
worst.  
x11perf 
should be used to analyze particular strengths and weaknesses
of servers, and is most useful when used by a server writer who wants to
analyze and improve a server.
While it can be used as a benchmark, it was written and is intended as
a performance testing tool.
Some servers which are very fast for certain applications can be
very slow for others.
No single number or small set of numbers are sufficient to
characterize how an X implementation will perform on all applications.
However, by knowledge of your favorite application, you
may be able to use the numbers
x11perf
reports to predict its performance on a given X implementation.
   
For repeatable results, x11perf 
should be run using a local connection on a
freshly-started server.  The default configuration runs each test 5 times, in
order to see if each trial takes approximately the same amount of time.
Strange glitches should be examined; if non-repeatable one might
chalk them up to
daemons and network traffic.  Each trial is run for 5 seconds, in order to
reduce random time differences.  The number of objects processed per second is
displayed to 3 significant digits, but you'll be lucky on most UNIX system if
the numbers are actually consistent to 2 digits.
You should make sure the cursor is NOT in the test window during runs of
x11perf .
(A prize to people who correctly explain why!!).
   
The current program is mostly the responsibility of Joel McCormack.  It is
based upon the x11perf developed by Phil Karlton, Susan Angebranndt, and Chris
Kent, who wanted to assess performance differences between various servers.
Mary Walker, Todd Newman, and several tests were added 
in order to write and tune
the PMAX (DECStation 3100) servers.  
For a general release to the world, x11perf 
was rewritten to ease making comparisons between widely varying
machines, to cover most important X functionality (the notable exception being
wide lines), and to exercise graphics operations in as many different
orientations and alignments as possible.
   
Before running a test, x11perf
determines what the round trip time to the server is.
By default it automatically calibrates the number of repetitions of each test,
so that each should take approximately the same length of time to run across
servers of widely differing speeds.  However, since each test must be run to
completion at least once, some slow servers may take a very long time,
particularly on the window moving and resizing tests.

2 OPTIONS
x11perf 
is solely Xlib based, and
accepts the options listed below:

  -display host:dpy
Specifies which display to use.
  
    -sync
Runs the tests in synchronous mode.
Normally only useful for debugging 
.I x11perf .
  
    -pack
Runs rectangle tests so that they pack rectangles right next to each other.
This makes it easy to debug server code for stipples and tiles...if the
pattern looks ugly, you've got alignment problems.
  
    -repeat <n>
Repeats each test n
times (by default each test is run 5 times).
  
    -time <s>
Specifies how long in seconds each test should be run (default 5 seconds).
  
    -all
Runs all tests.  This may take a while.
  
    -range <test1>[,<test2>]
Runs all the tests starting from the specified name test1 until
the name test2, including both the specified tests. The testnames
should be one of the options starting from -dot. (eg) -range line100
will peform the tests from the 100 pixel line test, and go on till the
last test, -range line100,dline10 will do the tests from line100 to
dline10.
  
    -labels
Generates just the descriptive labels for each test.  See x11perfcomp
for more details.
  
    -fg color
Specifies the foreground color to use.
  
    -bg color
Specifies the background color to use.
  
    -xor
Use GXxor mode to draw, rather than GXcopy.
This option only affects graphics
benchmarks in which the graphics function is actually used.
  
    -both
First use GXcopy, then use GXxor mode to draw.
This option only affects graphics
benchmarks in which the graphics function is actually used.
  
    -dot
Dot.
  
    -rect1
1x1 solid-filled rectangle.
  
    -rect10
10x10 solid-filled rectangle.
  
    -rect100
100x100 solid-filled rectangle.
  
    -rect500
500x500 solid-filled rectangle.
  
    -srect1
1x1 transparent stippled rectangle, 8x8 stipple pattern.
  
    -srect10
10x10 transparent stippled rectangle, 8x8 stipple pattern.
  
    -srect100
100x100 transparent stippled rectangle, 8x8 stipple pattern.
  
    -srect500
500x500 transparent stippled rectangle, 8x8 stipple pattern.
  
    -osrect
1x1 opaque stippled rectangle, 8x8 stipple pattern.
  
    -osrect10
10x10 opaque stippled rectangle, 8x8 stipple pattern.
  
    -osrect100
100x100 opaque stippled rectangle, 8x8 stipple pattern.
  
    -osrect500
500x500 opaque stippled rectangle, 8x8 stipple pattern.
  
    -tilerect1
1x1 tiled rectangle, 4x4 tile pattern.
  
    -tilerect10
10x10 tiled rectangle, 4x4 tile pattern.
  
    -tilerect100
100x100 tiled rectangle, 4x4 tile pattern.
  
    -tilerect500
500x500 tiled rectangle, 4x4 tile pattern.
  
    -bigtilerect1
1x1 tiled rectangle, 161x145 tile pattern.
  
    -bigtilerect10
10x10 tiled rectangle, 161x145 tile pattern.
  
    -bigtilerect100
100x100 tiled rectangle, 161x145 tile pattern.
  
    -bigtilerect500
500x500 tiled rectangle, 161x145 tile pattern.
  
    -seg1
1-pixel line segment.
  
    -seg10
10-pixel line segment.
  
    -seg100
100-pixel line segment.
  
    -seg500
500-pixel line segment.
  
    -seg100c1
100-pixel line segment (1 obscuring rectangle).
  
    -seg100c2
100-pixel line segment (2 obscuring rectangles).
  
    -seg100c3
100-pixel line segment (3 obscuring rectangles).
  
    -dseg10
10-pixel dashed segment (3 on, 2 off).
  
    -dseg100
100-pixel dashed segment (3 on, 2 off).
  
    -ddseg100
100-pixel double-dashed segment (3 fg, 2 bg).
  
    -line1
1-pixel line.
  
    -line10
10-pixel line.
  
    -line100
100-pixel line.
  
    -line500
500-pixel line.
  
    -dline10
10-pixel dashed line (3 on, 2 off).
  
    -dline100
100-pixel dashed line (3 on, 2 off).
  
    -ddline100
100-pixel double-dashed line (3 fg, 2 bg).
  
    -wline10
10-pixel line, line width 1.
  
    -wline100
100-pixel line, line width 10.
  
    -wline500
500-pixel line, line width 50.
  
    -wdline100
100-pixel dashed line, line width 10 (30 on, 20 off).
  
    -wddline100
100-pixel double-dashed line, line width 10 (30 fg, 20 bg).
  
    -circle1
1-pixel diameter circle.
  
    -circle10
10-pixel diameter circle.
  
    -circle100
100-pixel diameter circle.
  
    -circle500
500-pixel diameter circle.
  
    -dcircle100
100-pixel diameter dashed circle (3 on, 2 off).
  
    -dcircle100
100-pixel diameter double-dashed circle (3 fg, 2 bg).
  
    -wcircle10
10-pixel diameter circle, line width 1.
  
    -wcircle100
100-pixel diameter circle, line width 10.
  
    -wcircle500
500-pixel diameter circle, line width 50.
  
    -wdcircle100
100-pixel diameter dashed circle, line width 10 (30 on, 20 off).
  
    -wddcircle100
100-pixel diameter double-dashed circle, line width 10 (30 fg, 20 bg).
  
    -pcircle10
10-pixel diameter partial circle,
orientation and arc angle evenly distributed.
  
    -pcircle100
100-pixel diameter partial circle,
orientation and arc angle evenly distributed.
  
    -fcircle1
1-pixel diameter filled circle.
  
    -fcircle10
10-pixel diameter filled circle.
  
    -fcircle100
100-pixel diameter filled circle.
  
    -fcircle500
500-pixel diameter filled circle.
  
    -fcpcircle10
10-pixel diameter partial filled circle, chord fill.
  
    -fcpcircle100
100-pixel diameter partial filled circle, chord fill.
  
    -fspcircle10
10-pixel diameter partial filled circle, pie slice fill.
  
    -fspcircle100
100-pixel diameter partial filled circle, pie slice fill.
  
    -ellipse10
10-pixel diameter ellipse.
  
    -ellipse100
100-pixel diameter ellipse.
  
    -ellipse500
500-pixel diameter ellipse.
  
    -dellipse100
100-pixel diameter dashed ellipse (3 on, 2 off).
  
    -ddellipse100
100-pixel diameter double-dashed ellipse (3 fg, 2 bg).
  
    -wellipse10
10-pixel diameter ellipse, line width 1.
  
    -wellipse100
100-pixel diameter ellipse, line width 10.
  
    -wellipse500
500-pixel diameter ellipse, line width 50.
  
    -wdellipse100
100-pixel diameter dashed ellipse, line width 10 (30 on, 20 off).
  
    -wddellipse100
100-pixel diameter double-dashed ellipse, line width 10 (30 fg, 20 bg).
    -pellipse10
10-pixel diameter partial ellipse.
  
    -pellipse100
100-pixel diameter partial ellipse.
  
    -fellipse10
10-pixel diameter filled ellipse.
  
    -fellipse100
100-pixel diameter filled ellipse.
  
    -fellipse500
500-pixel diameter filled ellipse.
  
    -fcpellipse10
10-pixel diameter partial filled ellipse, chord fill.
  
    -fcpellipse100
100-pixel diameter partial filled ellipse, chord fill.
  
    -fspellipse10
10-pixel diameter partial filled ellipse, pie slice fill.
  
    -fspellipse100
100-pixel diameter partial filled ellipse, pie slice fill.
  
    -triangle1
Fill 1-pixel/side triangle.
  
    -triangle10
Fill 10-pixel/side triangle.
  
    -triangle100
Fill 100-pixel/side triangle.
  
    -trap10
Fill 10x10 trapezoid.
  
    -trap100
Fill 100x100 trapezoid.
  
    -strap10
Fill 10x10 transparent stippled trapezoid, 8x8 stipple pattern.
  
    -strap100
Fill 100x100 transparent stippled trapezoid, 8x8 stipple pattern.
  
    -ostrap10
Fill 10x10 opaque stippled trapezoid, 8x8 stipple pattern.
  
    -ostrap100
Fill 100x100 opaque stippled trapezoid, 8x8 stipple pattern.
  
    -tiletrap10
Fill 10x10 tiled trapezoid, 4x4 tile pattern.
  
    -tiletrap100
Fill 100x100 tiled trapezoid, 4x4 tile pattern.
  
    -complex10
Fill 10-pixel/side complex polygon.
  
    -complex100
Fill 100-pixel/side complex polygons.
  
    -ftext
Character in 80-char line (6x13).
  
    -tr10text
Character in 80-char line (Times-Roman 10).
  
    -tr24text
Character in 30-char line (Times-Roman 24).
  
    -polytext
Character in 20/40/20 line (6x13, Times-Roman 10, 6x13).
  
    -fitext
Character in 80-char image line (6x13).
  
    -tr10itext
Character in 80-char image line (Times-Roman 10).
  
    -tr24itext
Character in 30-char image line (Times-Roman 24).
  
    -scroll10
Scroll 10x10 pixels.
  
    -scroll100
Scroll 100x100 pixels.
  
    -scroll500
Scroll 500x500 pixels.
  
    -copyarea10
Copy 10x10 square.
  
    -copyarea100
Copy 100x100 square.
  
    -copyarea500
Copy 500x500 square.
  
    -copypix10
Copy 10x10 square from pixmap.
  
    -copypix100
Copy 100x100 square from pixmap.
  
    -copypix500
Copy 500x500 square from pixmap.
  
    -copyplane10
Copy 10x10 1-bit deep plane.
  
    -copyplane100
Copy 100x100 1-bit deep plane.
  
    -copyplane500
Copy 500x500 1-bit deep plane.
  
    -putimage10
PutImage 10x10 square.
  
    -putimage100
PutImage 100x100 square.
  
    -putimage500
PutImage 500x500 square.
  
    -shmput10
PutImage 10x10 square, MIT shared memory extension.
  
    -shmput100
PutImage 100x100 square, MIT shared memory extension.
  
    -shmput500
PutImage 500x500 square, MIT shared memory extension.
  
    -getimage10
GetImage 10x10 square.
  
    -getimage100
GetImage 100x100 square.
  
    -getimage500
GetImage 500x500 square.
  
    -noop
X protocol NoOperation.
  
    -atom
GetAtomName.
  
    -prop
GetProperty.
  
    -gc
Change graphics context.
  
    -create
Create and map subwindows.
  
    -ucreate
Create unmapped window.
  
    -map
Map window via parent.
  
    -unmap
Unmap window via parent.
  
    -destroy
Destroy window via parent.
  
    -popup
Hide/expose window via popup.
  
    -move
Move window.
  
    -umove
Moved unmapped window.
  
    -movetree
Move window via parent.
  
    -resize
Resize window.
  
    -uresize
Resize unmapped window.
  
    -circulate
Circulate window.
  
    -ucirculate
Circulate Unmapped window.

2 COPYRIGHT
Copyright 1988, 1989 Digital Equipment Corporation.

See X(1) for a full statement of rights and permissions.
2 AUTHORS
Joel McCormack

Phil Karlton

Susan Angebranndt

Chris Kent

