From: Jon Tombs (jon@robots.ox.ac.uk)
Date: 07/14/92


From: jon@robots.ox.ac.uk (Jon Tombs)
Subject: X386 for the 486.
Date: 14 Jul 1992 10:15:44 GMT

In case anyone else is interested, I've compiled X386 (from obz release
code), with -O2 -m486 to optimize for 486 machines. In the main it seems to
speed things up (especially on window operations), and I enclose the results
from x11perf.

ps
If you want to grab the -m486 X386 binary it is in
 /pub/outgoing on ftp.robots.ox.ac.uk, it's a lttle bigger than the 386 code
as it also has the shape extension compiled in, plus the 486 overheads.

long timings follow, ratios > 1.00 are speedups:

1: x11perf.386
2: x11perf.486

     1 2 ratio Operation
======== ======== ======== ============
 108000.0 111000.0 1.03 Dot
  51900.0 50800.0 0.98 1x1 rectangle
  10500.0 10600.0 1.01 10x10 rectangle
    456.0 459.0 1.01 100x100 rectangle
     23.5 23.5 1.00 500x500 rectangle
  38400.0 37200.0 0.97 1x1 stippled rectangle
   8370.0 8190.0 0.98 10x10 stippled rectangle
    122.0 123.0 1.01 100x100 stippled rectangle
     13.4 13.6 1.01 500x500 stippled rectangle
  38400.0 37800.0 0.98 1x1 opaque stippled rectangle
   8750.0 8730.0 1.00 10x10 opaque stippled rectangle
    125.0 128.0 1.02 100x100 opaque stippled rectangle
     14.3 14.5 1.01 500x500 opaque stippled rectangle
  41700.0 41200.0 0.99 1x1 4x4 tiled rectangle
  13200.0 13100.0 0.99 10x10 4x4 tiled rectangle
    516.0 515.0 1.00 100x100 4x4 tiled rectangle
     24.1 24.1 1.00 500x500 4x4 tiled rectangle
  34200.0 33700.0 0.99 1x1 161x145 stippled rectangle
   5980.0 5910.0 0.99 10x10 161x145 stippled rectangle
    126.0 123.0 0.98 100x100 161x145 stippled rectangle
      5.5 5.3 0.96 500x500 161x145 stippled rectangle
  34400.0 33700.0 0.98 1x1 161x145 opaque stippled rectangle
   5990.0 5950.0 0.99 10x10 161x145 opaque stippled rectangle
    126.0 123.0 0.98 100x100 161x145 opaque stippled rectangle
      5.5 5.3 0.96 500x500 161x145 opaque stippled rectangle
  32500.0 32700.0 1.01 1x1 161x145 tiled rectangle
   6560.0 6570.0 1.00 10x10 161x145 tiled rectangle
    281.0 284.0 1.01 100x100 161x145 tiled rectangle
     15.3 15.6 1.02 500x500 161x145 tiled rectangle
  34000.0 34400.0 1.01 1x1 216x208 tiled rectangle
   7360.0 7450.0 1.01 10x10 216x208 tiled rectangle
    294.0 314.0 1.07 100x100 216x208 tiled rectangle
     15.2 16.6 1.09 500x500 216x208 tiled rectangle
  42100.0 43900.0 1.04 1-pixel line segment
  22500.0 23300.0 1.04 10-pixel line segment
   4240.0 4360.0 1.03 100-pixel line segment
    922.0 950.0 1.03 500-pixel line segment
   4170.0 4270.0 1.02 100-pixel line segment (1 kid)
   4040.0 4120.0 1.02 100-pixel line segment (2 kids)
   3910.0 3980.0 1.02 100-pixel line segment (3 kids)
  22800.0 23600.0 1.04 10-pixel dashed segment
   5120.0 5290.0 1.03 100-pixel dashed segment
   5110.0 5230.0 1.02 100-pixel double-dashed segment
  39400.0 41200.0 1.05 10-pixel horizontal line segment
  26400.0 27100.0 1.03 100-pixel horizontal line segment
  10000.0 10100.0 1.01 500-pixel horizontal line segment
  38100.0 39900.0 1.05 10-pixel vertical line segment
  12700.0 12900.0 1.02 100-pixel vertical line segment
   3180.0 3190.0 1.00 500-pixel vertical line segment
   8800.0 8160.0 0.93 10x1 wide horizontal line segment
   1940.0 1890.0 0.97 100x10 wide horizontal line segment
    170.0 169.0 0.99 500x50 wide horizontal line segment
   8800.0 8060.0 0.92 10x1 wide vertical line segment
    888.0 887.0 1.00 100x10 wide vertical line segment
    106.0 107.0 1.01 500x50 wide vertical line segment
  54200.0 56700.0 1.05 1-pixel line
  26500.0 27300.0 1.03 10-pixel line
   4360.0 4490.0 1.03 100-pixel line
    925.0 955.0 1.03 500-pixel line
  25600.0 26400.0 1.03 10-pixel dashed line
   5250.0 5420.0 1.03 100-pixel dashed line
   5240.0 5360.0 1.02 100-pixel double-dashed line
   4800.0 4760.0 0.99 10x1 wide line
    709.0 714.0 1.01 100x10 wide line
     96.2 96.3 1.00 500x50 wide line
    370.0 373.0 1.01 100x10 wide dashed line
    369.0 370.0 1.00 100x10 wide double-dashed line
  12600.0 12600.0 1.00 10x10 rectangle outline
   4690.0 4710.0 1.00 100x100 rectangle outline
   1190.0 1180.0 0.99 500x500 rectangle outline
  13200.0 13300.0 1.01 10x10 wide rectangle outline
    530.0 535.0 1.01 100x100 wide rectangle outline
     46.9 47.3 1.01 500x500 wide rectangle outline
  19400.0 20100.0 1.04 1-pixel circle
   6730.0 6910.0 1.03 10-pixel circle
    976.0 996.0 1.02 100-pixel circle
    205.0 209.0 1.02 500-pixel circle
    456.0 456.0 1.00 100-pixel dashed circle
    313.0 314.0 1.00 100-pixel double-dashed circle
   4900.0 4890.0 1.00 10-pixel wide circle
    373.0 376.0 1.01 100-pixel wide circle
     42.9 43.0 1.00 500-pixel wide circle
     32.1 31.9 0.99 100-pixel wide dashed circle
     24.8 25.0 1.01 100-pixel wide double-dashed circle
   6630.0 6720.0 1.01 10-pixel partial circle
   1360.0 1370.0 1.01 100-pixel partial circle
    313.0 312.0 1.00 10-pixel wide partial circle
    110.0 111.0 1.01 100-pixel wide partial circle
  76000.0 93000.0 1.22 1-pixel solid circle
   8370.0 8470.0 1.01 10-pixel solid circle
    500.0 500.0 1.00 100-pixel solid circle
     29.2 29.2 1.00 500-pixel solid circle
   4920.0 5020.0 1.02 10-pixel fill chord partial circle
    665.0 667.0 1.00 100-pixel fill chord partial circle
   4730.0 4790.0 1.01 10-pixel fill slice partial circle
    632.0 634.0 1.00 100-pixel fill slice partial circle
   7860.0 8030.0 1.02 10-pixel ellipse
   1160.0 1180.0 1.02 100-pixel ellipse
    242.0 245.0 1.01 500-pixel ellipse
    557.0 558.0 1.00 100-pixel dashed ellipse
    383.0 383.0 1.00 100-pixel double-dashed ellipse
   5910.0 5880.0 0.99 10-pixel wide ellipse
    511.0 514.0 1.01 100-pixel wide ellipse
     58.4 58.6 1.00 500-pixel wide ellipse
     17.6 17.7 1.01 100-pixel wide dashed ellipse
     11.7 11.8 1.01 100-pixel wide double-dashed ellipse
   6940.0 7080.0 1.02 10-pixel partial ellipse
   1650.0 1660.0 1.01 100-pixel partial ellipse
    225.0 223.0 0.99 10-pixel wide partial ellipse
     49.5 50.0 1.01 100-pixel wide partial ellipse
  11200.0 11300.0 1.01 10-pixel filled ellipse
    845.0 847.0 1.00 100-pixel filled ellipse
     55.9 56.0 1.00 500-pixel filled ellipse
   5600.0 5640.0 1.01 10-pixel fill chord partial ellipse
   1280.0 1280.0 1.00 100-pixel fill chord partial ellipse
   5440.0 5460.0 1.00 10-pixel fill slice partial ellipse
   1180.0 1180.0 1.00 100-pixel fill slice partial ellipse
  11700.0 12100.0 1.03 Fill 1x1 equivalent triangle
   4750.0 4910.0 1.03 Fill 10x10 equivalent triangle
    330.0 335.0 1.02 Fill 100x100 equivalent triangle
   5780.0 5990.0 1.04 Fill 10x10 trapezoid
    369.0 373.0 1.01 Fill 100x100 trapezoid
   3590.0 3630.0 1.01 Fill 10x10 stippled trapezoid
     73.9 74.8 1.01 Fill 100x100 stippled trapezoid
   3690.0 3780.0 1.02 Fill 10x10 opaque stippled trapezoid
    112.0 114.0 1.02 Fill 100x100 opaque stippled trapezoid
   4080.0 4170.0 1.02 Fill 10x10 tiled trapezoid
    336.0 336.0 1.00 Fill 100x100 tiled trapezoid
   2870.0 2920.0 1.02 Fill 10x10 161x145 stippled trapezoid
    107.0 109.0 1.02 Fill 100x100 161x145 stippled trapezoid
   2860.0 2920.0 1.02 Fill 10x10 161x145 opaque stippled trapezoid
    107.0 109.0 1.02 Fill 100x100 161x145 opaque stippled trapezoid
   2950.0 2960.0 1.00 Fill 10x10 161x145 tiled trapezoid
    204.0 204.0 1.00 Fill 100x100 161x145 tiled trapezoid
   3140.0 3100.0 0.99 Fill 10x10 216x208 tiled trapezoid
    228.0 224.0 0.98 Fill 100x100 216x208 tiled trapezoid
   2530.0 2480.0 0.98 Fill 10x10 equivalent complex polygon
    219.0 220.0 1.00 Fill 100x100 equivalent complex polygons
  13100.0 13200.0 1.01 Char in 80-char line (6x13)
  12200.0 12200.0 1.00 Char in 70-char line (8x13)
  10900.0 11000.0 1.01 Char in 60-char line (9x15)
  36300.0 35200.0 0.97 Char in 80-char image line (6x13)
  30800.0 30900.0 1.00 Char in 70-char image line (8x13)
  18900.0 19500.0 1.03 Char in 60-char image line (9x15)
   2390.0 2350.0 0.98 Scroll 10x10 pixels
    124.0 124.0 1.00 Scroll 100x100 pixels
      6.4 6.4 1.00 Scroll 500x500 pixels
   2510.0 2510.0 1.00 Copy 10x10 from window to window
    108.0 108.0 1.00 Copy 100x100 from window to window
      5.3 5.3 1.00 Copy 500x500 from window to window
   3280.0 3230.0 0.98 Copy 10x10 from pixmap to window
    212.0 211.0 1.00 Copy 100x100 from pixmap to window
     12.5 12.5 1.00 Copy 500x500 from pixmap to window
   4260.0 4230.0 0.99 Copy 10x10 from window to pixmap
    152.0 152.0 1.00 Copy 100x100 from window to pixmap
      6.8 6.9 1.01 Copy 500x500 from window to pixmap
   6760.0 6840.0 1.01 Copy 10x10 from pixmap to pixmap
    333.0 334.0 1.00 Copy 100x100 from pixmap to pixmap
     14.5 14.3 0.99 Copy 500x500 from pixmap to pixmap
   4970.0 4890.0 0.98 Copy 10x10 1-bit deep plane
    330.0 328.0 0.99 Copy 100x100 1-bit deep plane
     18.0 17.8 0.99 Copy 500x500 1-bit deep plane
   2070.0 2110.0 1.02 PutImage 10x10 square
     51.8 53.8 1.04 PutImage 100x100 square
      0.5 0.4 0.80 PutImage 500x500 square
    258.0 271.0 1.05 GetImage 10x10 square
     55.2 56.0 1.01 GetImage 100x100 square
      2.6 2.6 1.00 GetImage 500x500 square
  74600.0 77200.0 1.03 X protocol NoOperation
    283.0 314.0 1.11 GetAtomName
    288.0 299.0 1.04 GetProperty
   8190.0 8720.0 1.06 Change graphics context
   2230.0 2590.0 1.16 Create and map subwindows (4 kids)
   2710.0 2980.0 1.10 Create and map subwindows (16 kids)
   2790.0 2990.0 1.07 Create and map subwindows (25 kids)
   2520.0 2690.0 1.07 Create and map subwindows (50 kids)
   2620.0 2820.0 1.08 Create and map subwindows (75 kids)
   2590.0 2770.0 1.07 Create and map subwindows (100 kids)
   2340.0 2470.0 1.06 Create and map subwindows (200 kids)
   5050.0 5630.0 1.11 Create unmapped window (4 kids)
   5160.0 5840.0 1.13 Create unmapped window (16 kids)
   5210.0 5800.0 1.11 Create unmapped window (25 kids)
   5260.0 5800.0 1.10 Create unmapped window (50 kids)
   5270.0 5840.0 1.11 Create unmapped window (75 kids)
   5210.0 5840.0 1.12 Create unmapped window (100 kids)
   5270.0 5910.0 1.12 Create unmapped window (200 kids)
   2930.0 3330.0 1.14 Map window via parent (4 kids)
   4360.0 4560.0 1.05 Map window via parent (16 kids)
   4580.0 4750.0 1.04 Map window via parent (25 kids)
   4630.0 4710.0 1.02 Map window via parent (50 kids)
   4660.0 4740.0 1.02 Map window via parent (75 kids)
   4700.0 4790.0 1.02 Map window via parent (100 kids)
   4750.0 4740.0 1.00 Map window via parent (200 kids)
   9780.0 10200.0 1.04 Unmap window via parent (4 kids)
  19200.0 19800.0 1.03 Unmap window via parent (16 kids)
  21700.0 21600.0 1.00 Unmap window via parent (25 kids)
  23700.0 23600.0 1.00 Unmap window via parent (50 kids)
  23900.0 25000.0 1.05 Unmap window via parent (75 kids)
  25200.0 25000.0 0.99 Unmap window via parent (100 kids)
  26600.0 26400.0 0.99 Unmap window via parent (200 kids)
   5390.0 5500.0 1.02 Destroy window via parent (4 kids)
   8270.0 8540.0 1.03 Destroy window via parent (16 kids)
   8760.0 9060.0 1.03 Destroy window via parent (25 kids)
   9420.0 9580.0 1.02 Destroy window via parent (50 kids)
   9590.0 9960.0 1.04 Destroy window via parent (75 kids)
   9400.0 9960.0 1.06 Destroy window via parent (100 kids)
   9780.0 9960.0 1.02 Destroy window via parent (200 kids)
   1380.0 1610.0 1.17 Hide/expose window via popup (4 kids)
   2440.0 2680.0 1.10 Hide/expose window via popup (16 kids)
   2710.0 2920.0 1.08 Hide/expose window via popup (25 kids)
   2820.0 2980.0 1.06 Hide/expose window via popup (50 kids)
   2880.0 3000.0 1.04 Hide/expose window via popup (75 kids)
   2960.0 3060.0 1.03 Hide/expose window via popup (100 kids)
   3020.0 3100.0 1.03 Hide/expose window via popup (200 kids)
    851.0 1020.0 1.20 Move window (4 kids)
    584.0 694.0 1.19 Move window (16 kids)
    509.0 585.0 1.15 Move window (25 kids)
    395.0 434.0 1.10 Move window (50 kids)
    317.0 343.0 1.08 Move window (75 kids)
    266.0 285.0 1.07 Move window (100 kids)
    170.0 182.0 1.07 Move window (200 kids)
  11300.0 14300.0 1.27 Moved unmapped window (4 kids)
  11100.0 13900.0 1.25 Moved unmapped window (16 kids)
  11000.0 13900.0 1.26 Moved unmapped window (25 kids)
  10900.0 13900.0 1.28 Moved unmapped window (50 kids)
  10900.0 13900.0 1.28 Moved unmapped window (75 kids)
  10900.0 13800.0 1.27 Moved unmapped window (100 kids)
  10600.0 13300.0 1.25 Moved unmapped window (200 kids)
   2350.0 2570.0 1.09 Move window via parent (4 kids)
   4340.0 4540.0 1.05 Move window via parent (16 kids)
   4850.0 4940.0 1.02 Move window via parent (25 kids)
   5300.0 5400.0 1.02 Move window via parent (50 kids)
   5500.0 5600.0 1.02 Move window via parent (75 kids)
   5630.0 5690.0 1.01 Move window via parent (100 kids)
   5750.0 5790.0 1.01 Move window via parent (200 kids)
   1020.0 1250.0 1.23 Resize window (4 kids)
    768.0 932.0 1.21 Resize window (16 kids)
    624.0 740.0 1.19 Resize window (25 kids)
    492.0 559.0 1.14 Resize window (50 kids)
    388.0 433.0 1.12 Resize window (75 kids)
    335.0 365.0 1.09 Resize window (100 kids)
    218.0 235.0 1.08 Resize window (200 kids)
  10000.0 12500.0 1.25 Resize unmapped window (4 kids)
   9900.0 12500.0 1.26 Resize unmapped window (16 kids)
   9950.0 12500.0 1.26 Resize unmapped window (25 kids)
   9870.0 12500.0 1.27 Resize unmapped window (50 kids)
   9840.0 12400.0 1.26 Resize unmapped window (75 kids)
   9890.0 12400.0 1.25 Resize unmapped window (100 kids)
   9640.0 11900.0 1.23 Resize unmapped window (200 kids)
    572.0 660.0 1.15 Circulate window (4 kids)
    389.0 461.0 1.19 Circulate window (16 kids)
    368.0 436.0 1.18 Circulate window (25 kids)
    343.0 404.0 1.18 Circulate window (50 kids)
    328.0 377.0 1.15 Circulate window (75 kids)
    314.0 358.0 1.14 Circulate window (100 kids)
    264.0 299.0 1.13 Circulate window (200 kids)
  42100.0 41200.0 0.98 Circulate Unmapped window (4 kids)
  35200.0 34100.0 0.97 Circulate Unmapped window (16 kids)
  30400.0 29000.0 0.95 Circulate Unmapped window (25 kids)
  19300.0 19100.0 0.99 Circulate Unmapped window (50 kids)
  15000.0 15000.0 1.00 Circulate Unmapped window (75 kids)
  12500.0 12400.0 0.99 Circulate Unmapped window (100 kids)
   7050.0 7170.0 1.02 Circulate Unmapped window (200 kids)