[WARNING: this is a long posting (620 lines), but the results I think are interesting and relevant to this community. A copy of this message will be permanently archived on ftp.math.utah.edu in pub/benchmarks/x11perf-direct-xlib.msg.] Solaris 2.2 comes with a new Sun product, Direct Xlib, which according to sunflash is 51.34 SunFlash, Tue, 30 Mar 93 02:21:07: >> Direct XLib - a faster version of the XLib library, providing increased >> performance for 2D graphics applications. 52.31 SunFlash, Wed, 28 Apr 93 03:09:23: >> DIRECT XLIB(TM) 2.0: Direct Xlib 2.0 is also bundled in Solaris 2.2. Direct >> Xlib is a set of supplemental Xlib libraries for OpenWindows >> that provides improved 2D graphics performance to Xlib >> applications that are running locally using the OpenWindows >> X11/NeWS server. I have installed it on my personal Sun SPARCstation LX running Solaris 2.2 and OpenWindows 3.2, and the results tabulated below where obtained on it. Even without Direct Xlib, there are noticeable speedups of OpenWindows 3.2 over 3.1, which should encourage people to upgrade to Solaris 2.2 and OpenWindows 3.2. Direct Xlib can be run in two ways: either via a script for which you supply the X program as an argument, or by setting LD_LIBRARY_PATH to place the directory containing Direct Xlib first, so that its versions of the libraries get loaded. The Sun documentation cautions that not all applications will see speedups. I was very interested to see if it would improve the x11perf benchmark figures that I now have collected for a number of systems, available on ftp.math.utah.edu in the compressed PostScript file: -rw-r--r-- 1 beebe staff 47964 Jul 16 10:18 \ /u/ftp/pub/benchmarks/x11perf-1-08.ps.z The data that I've collected covers only 5 of the 222 tests that x11perf can do; they are: dots, lines, filled rectangles, text, and window creation. That subset was chosen by Hewlett-Packard in a techical report on their 9000/7xx series machines as representative of common window operations, and that report was what led me to begin collecting such results for other systems. The x11perf results bear little resemblance to integer and floating-point benchmark results, and even less to machine cost; there are differences of a factor of 200 (yes, that much!) between some systems that are otherwise competitive in floating-point performance and price. For the 5 selected tests, Sun's Direct Xlib is definitely helpful: ========================================================================= x11perf test Xlib Direct Xlib Speedup ========================================================================= -dot 537000.0 2130000.0 3.966 -line10 251000.0 380000.0 1.514 -rect10 163000.0 276000.0 1.693 -tr10itext 100000.0 215000.0 2.150 -create-50-kids 1140.0 4210.0 3.693 ========================================================================= The numbers in columns 2 and 3 are counts of operations/second. I then ran all of the 222 x11perf tests with and without Direct Xlib, and obtained the following tables. The first table is ordered by speedup of Direct Xlib over ordinary Xlib, and the second table is ordered by test name. At the end of this posting are the script and awk program that were used to produce these tables, in case you want to repeat these experiments yourself after you upgrade to Solaris 2.2. The first surprising result is that certain operations are really helped immensely by Direct Xlib, and they appear to be ones that would be used in image processing applications. The UofUtah Medical Imaging Research Laboratory should derive particular benefit from Direct Xlib. The second surprising result is that 106 of the 222 operations are SLOWER with Direct Xlib, and the worst case is 25 times slower. Thus, one cannot just make Direct Xlib the system default; it has to be application dependent. What Sun needs to do now is figure out how to replace the slow part of Direct Xlib with the faster versions from ordinary Xlib, and keep the fast stuff from Direct Xlib, so that performance is never worse, and almost always better. ========================================================================= x11perf test Xlib Direct Xlib Speedup ========================================================================= -copywinwin10 1960.0 25200.0 12.857 -scroll10 1970.0 24600.0 12.487 -getimage10 180.0 1770.0 9.833 -putimage500 9.1 63.9 7.022 -putimage100 196.0 1300.0 6.633 -copypixwin10 2270.0 14700.0 6.476 -getimage500 4.4 23.6 5.364 -getimage100 94.0 435.0 4.628 -triangle1 22200.0 101000.0 4.550 -ostrap10 17700.0 76800.0 4.339 -trap10 17800.0 76600.0 4.303 -strap10 17800.0 75700.0 4.253 -dot 537000.0 2130000.0 3.966 -putimage10 2890.0 10800.0 3.737 -create-50-kids 1140.0 4210.0 3.693 -triangle10 21600.0 75300.0 3.486 -ftext 105000.0 338000.0 3.219 -rect1 269000.0 855000.0 3.178 -copywinpix10 1640.0 5200.0 3.171 -seg1 262000.0 804000.0 3.069 -osrect 267000.0 793000.0 2.970 -srect1 268000.0 794000.0 2.963 -tilerect1 265000.0 774000.0 2.921 -fitext 84900.0 245000.0 2.886 -polytext 75400.0 207000.0 2.745 -line1 438000.0 1100000.0 2.511 -copypixpix10 2680.0 6200.0 2.313 -tr10itext 100000.0 215000.0 2.150 -tr10text 127000.0 269000.0 2.118 -tiletrap10 17700.0 35600.0 2.011 -seg10 196000.0 387000.0 1.974 -create-25-kids 1120.0 1910.0 1.705 -rect10 163000.0 276000.0 1.693 -srect10 162000.0 272000.0 1.679 -tilerect10 161000.0 269000.0 1.671 -osrect10 163000.0 271000.0 1.663 -fcircle1 109000.0 171000.0 1.569 -create-16-kids 1120.0 1730.0 1.545 -tr24itext 48300.0 74400.0 1.540 -line10 251000.0 380000.0 1.514 -copypixwin100 905.0 1350.0 1.492 -circle1 103000.0 149000.0 1.447 -fcpcircle10 522.0 729.0 1.397 -scroll100 1980.0 2740.0 1.384 -fcircle10 91800.0 126000.0 1.373 -trap100 6290.0 8350.0 1.328 -strap100 6270.0 8310.0 1.325 -wddline100 719.0 953.0 1.325 -ostrap100 6380.0 8310.0 1.303 -tr24text 73300.0 95500.0 1.303 -circle10 86700.0 111000.0 1.280 -copypixpix100 874.0 1080.0 1.236 -triangle100 6310.0 7770.0 1.231 -copywinpix100 387.0 467.0 1.207 -fspcircle10 594.0 717.0 1.207 -complex10 6070.0 7320.0 1.206 -fspcircle100 447.0 539.0 1.206 -wline10 83800.0 101000.0 1.205 -fspellipse10 631.0 752.0 1.192 -fcpcircle100 486.0 578.0 1.189 -fcpellipse10 648.0 768.0 1.185 -fcpellipse100 525.0 615.0 1.171 -fspellipse100 498.0 582.0 1.169 -wcircle10 2300.0 2640.0 1.148 -fellipse10 5360.0 6130.0 1.144 -ucirculate-75-kids 38000.0 43000.0 1.132 -ucirculate-100-kids 38600.0 43400.0 1.124 -pellipse10 701.0 784.0 1.118 -seg100c3-3-kids 30900.0 34300.0 1.110 -seg100 41300.0 45800.0 1.109 -seg100c1 42600.0 47200.0 1.108 -seg100c2-2-kids 38900.0 42800.0 1.100 -ucirculate-25-kids 43600.0 47300.0 1.085 -ucirculate-16-kids 43800.0 47300.0 1.080 -ucirculate-4-kids 43700.0 47100.0 1.078 -ucirculate-200-kids 32800.0 35300.0 1.076 -wline500 302.0 324.0 1.073 -pellipse100 588.0 630.0 1.071 -destroy-4-kids 1190.0 1270.0 1.067 -copywinwin100 1740.0 1850.0 1.063 -line100 43200.0 45900.0 1.062 -ucirculate-50-kids 40600.0 43100.0 1.062 -copywinpix500 21.8 23.1 1.060 -pcircle100 571.0 604.0 1.058 -pcircle10 700.0 737.0 1.053 -rect100 8850.0 9240.0 1.044 -osrect100 8820.0 9160.0 1.039 -srect100 8820.0 9160.0 1.039 -wellipse10 2550.0 2650.0 1.039 -bigtilerect1 21100.0 21900.0 1.038 -tilerect100 8760.0 9090.0 1.038 -circle500 348.0 359.0 1.032 -fcircle500 329.0 338.0 1.027 -seg500 9160.0 9360.0 1.022 -bigtilerect10 10000.0 10200.0 1.020 -copypixwin500 63.3 64.5 1.019 -line500 9250.0 9370.0 1.013 -ddellipse100 198.0 200.0 1.010 -rect500 438.0 442.0 1.009 -scroll500 127.0 128.0 1.008 -fellipse500 577.0 581.0 1.007 -osrect500 433.0 436.0 1.007 -srect500 433.0 436.0 1.007 -copypixpix500 62.2 62.5 1.005 -tilerect500 429.0 431.0 1.005 -uresize-4-kids 3850.0 3870.0 1.005 -fellipse100 2680.0 2690.0 1.004 -umove-100-kids 4600.0 4620.0 1.004 -copywinwin500 81.8 82.0 1.002 -umove-75-kids 4620.0 4630.0 1.002 -bigtilerect500 12.3 12.3 1.000 -copyplane500 261.0 261.0 1.000 -ellipse500 513.0 513.0 1.000 -ucreate-50-kids 1670.0 1670.0 1.000 -umove-4-kids 4670.0 4670.0 1.000 -umove-50-kids 4630.0 4630.0 1.000 -wdline100 69.6 69.5 0.999 -circle100 5950.0 5940.0 0.998 -umove-16-kids 4660.0 4650.0 0.998 -umove-200-kids 4590.0 4580.0 0.998 -umove-25-kids 4650.0 4640.0 0.998 -fcircle100 5990.0 5970.0 0.997 -atom 241.0 240.0 0.996 -prop 239.0 238.0 0.996 -dellipse100 202.0 201.0 0.995 -uresize-16-kids 3850.0 3830.0 0.995 -uresize-25-kids 3850.0 3830.0 0.995 -uresize-50-kids 3850.0 3830.0 0.995 -copyplane100 1660.0 1650.0 0.994 -ucreate-100-kids 1690.0 1680.0 0.994 -ucreate-16-kids 1680.0 1670.0 0.994 -ucreate-4-kids 1640.0 1630.0 0.994 -ucreate-75-kids 1690.0 1680.0 0.994 -wdellipse100 14.7 14.6 0.993 -uresize-100-kids 3830.0 3800.0 0.992 -uresize-200-kids 3810.0 3780.0 0.992 -uresize-75-kids 3840.0 3810.0 0.992 -ucreate-200-kids 1700.0 1680.0 0.988 -ucreate-25-kids 1680.0 1660.0 0.988 -copyplane10 2290.0 2260.0 0.987 -dcircle100 144.0 142.0 0.986 -wcircle500 56.1 55.2 0.984 -wdcircle100 12.4 12.2 0.984 -bigtilerect100 291.0 286.0 0.983 -wellipse500 64.9 63.5 0.978 -wddellipse100 32.7 31.9 0.976 -dseg10 21000.0 20300.0 0.967 -create-200-kids 1160.0 1120.0 0.966 -ddseg100 6120.0 5910.0 0.966 -ellipse100 2050.0 1980.0 0.966 -ddcircle100 144.0 139.0 0.965 -wline100 439.0 422.0 0.961 -ddline100 6200.0 5950.0 0.960 -wellipse100 126.0 121.0 0.960 -dseg100 7630.0 7320.0 0.959 -dline100 7670.0 7350.0 0.958 -create-100-kids 1150.0 1100.0 0.957 -wddcircle100 29.7 28.3 0.953 -create-75-kids 1150.0 1090.0 0.948 -wcircle100 123.0 116.0 0.943 -ellipse10 5890.0 5470.0 0.929 -dline10 22600.0 20600.0 0.912 -complex100 2440.0 2200.0 0.902 -destroy-100-kids 2320.0 2080.0 0.897 -destroy-75-kids 2240.0 1990.0 0.888 -gc 6820.0 6030.0 0.884 -movetree-4-kids 1790.0 1570.0 0.877 -destroy-200-kids 2130.0 1850.0 0.869 -destroy-25-kids 1910.0 1580.0 0.827 -movetree-50-kids 22400.0 18500.0 0.826 -movetree-75-kids 30700.0 25300.0 0.824 -movetree-100-kids 37200.0 30600.0 0.823 -noop 129000.0 106000.0 0.822 -destroy-16-kids 1690.0 1380.0 0.817 -movetree-25-kids 12500.0 10200.0 0.816 -move-4-kids 472.0 376.0 0.797 -tiletrap100 6310.0 5020.0 0.796 -resize-4-kids 579.0 451.0 0.779 -destroy-50-kids 2380.0 1840.0 0.773 -map-75-kids 4940.0 3790.0 0.767 -movetree-16-kids 8220.0 6220.0 0.757 -map-100-kids 5030.0 3640.0 0.724 -map-200-kids 5100.0 3690.0 0.724 -move-16-kids 546.0 358.0 0.656 -resize-16-kids 555.0 363.0 0.654 -map-50-kids 4850.0 3100.0 0.639 -popup-200-kids 1170.0 729.0 0.623 -circulate-4-kids 409.0 253.0 0.619 -popup-75-kids 1330.0 806.0 0.606 -popup-100-kids 1290.0 781.0 0.605 -move-25-kids 521.0 313.0 0.601 -resize-25-kids 537.0 320.0 0.596 -popup-50-kids 1360.0 797.0 0.586 -popup-25-kids 1190.0 679.0 0.571 -map-25-kids 4540.0 2320.0 0.511 -popup-16-kids 1140.0 563.0 0.494 -resize-50-kids 488.0 228.0 0.467 -map-16-kids 4230.0 1970.0 0.466 -move-50-kids 473.0 214.0 0.452 -circulate-16-kids 365.0 151.0 0.414 -unmap-75-kids 30500.0 12500.0 0.410 -map-4-kids 2660.0 1040.0 0.391 -move-75-kids 412.0 154.0 0.374 -resize-75-kids 446.0 163.0 0.365 -move-100-kids 351.0 115.0 0.328 -popup-4-kids 758.0 242.0 0.319 -circulate-25-kids 348.0 108.0 0.310 -resize-100-kids 400.0 121.0 0.302 -unmap-200-kids 97300.0 23800.0 0.245 -resize-200-kids 305.0 56.5 0.185 -circulate-50-kids 323.0 56.7 0.176 -move-200-kids 281.0 47.9 0.170 -unmap-100-kids 90200.0 15300.0 0.170 -unmap-4-kids 7780.0 1280.0 0.165 -create-4-kids 3290.0 487.0 0.148 -unmap-25-kids 31600.0 4630.0 0.147 -unmap-50-kids 59900.0 8420.0 0.141 -circulate-75-kids 289.0 35.3 0.122 -unmap-16-kids 26200.0 2940.0 0.112 -circulate-100-kids 286.0 24.4 0.085 -movetree-200-kids 52700.0 3170.0 0.060 -circulate-200-kids 228.0 8.2 0.036 ========================================================================= Here is the same data, this time sorted by test name: ========================================================================= x11perf test Xlib Direct Xlib Speedup ========================================================================= -atom 241.0 240.0 0.996 -bigtilerect1 21100.0 21900.0 1.038 -bigtilerect10 10000.0 10200.0 1.020 -bigtilerect100 291.0 286.0 0.983 -bigtilerect500 12.3 12.3 1.000 -circle1 103000.0 149000.0 1.447 -circle10 86700.0 111000.0 1.280 -circle100 5950.0 5940.0 0.998 -circle500 348.0 359.0 1.032 -circulate-100-kids 286.0 24.4 0.085 -circulate-16-kids 365.0 151.0 0.414 -circulate-200-kids 228.0 8.2 0.036 -circulate-25-kids 348.0 108.0 0.310 -circulate-4-kids 409.0 253.0 0.619 -circulate-50-kids 323.0 56.7 0.176 -circulate-75-kids 289.0 35.3 0.122 -complex10 6070.0 7320.0 1.206 -complex100 2440.0 2200.0 0.902 -copypixpix10 2680.0 6200.0 2.313 -copypixpix100 874.0 1080.0 1.236 -copypixpix500 62.2 62.5 1.005 -copypixwin10 2270.0 14700.0 6.476 -copypixwin100 905.0 1350.0 1.492 -copypixwin500 63.3 64.5 1.019 -copyplane10 2290.0 2260.0 0.987 -copyplane100 1660.0 1650.0 0.994 -copyplane500 261.0 261.0 1.000 -copywinpix10 1640.0 5200.0 3.171 -copywinpix100 387.0 467.0 1.207 -copywinpix500 21.8 23.1 1.060 -copywinwin10 1960.0 25200.0 12.857 -copywinwin100 1740.0 1850.0 1.063 -copywinwin500 81.8 82.0 1.002 -create-100-kids 1150.0 1100.0 0.957 -create-16-kids 1120.0 1730.0 1.545 -create-200-kids 1160.0 1120.0 0.966 -create-25-kids 1120.0 1910.0 1.705 -create-4-kids 3290.0 487.0 0.148 -create-50-kids 1140.0 4210.0 3.693 -create-75-kids 1150.0 1090.0 0.948 -dcircle100 144.0 142.0 0.986 -ddcircle100 144.0 139.0 0.965 -ddellipse100 198.0 200.0 1.010 -ddline100 6200.0 5950.0 0.960 -ddseg100 6120.0 5910.0 0.966 -dellipse100 202.0 201.0 0.995 -destroy-100-kids 2320.0 2080.0 0.897 -destroy-16-kids 1690.0 1380.0 0.817 -destroy-200-kids 2130.0 1850.0 0.869 -destroy-25-kids 1910.0 1580.0 0.827 -destroy-4-kids 1190.0 1270.0 1.067 -destroy-50-kids 2380.0 1840.0 0.773 -destroy-75-kids 2240.0 1990.0 0.888 -dline10 22600.0 20600.0 0.912 -dline100 7670.0 7350.0 0.958 -dot 537000.0 2130000.0 3.966 -dseg10 21000.0 20300.0 0.967 -dseg100 7630.0 7320.0 0.959 -ellipse10 5890.0 5470.0 0.929 -ellipse100 2050.0 1980.0 0.966 -ellipse500 513.0 513.0 1.000 -fcircle1 109000.0 171000.0 1.569 -fcircle10 91800.0 126000.0 1.373 -fcircle100 5990.0 5970.0 0.997 -fcircle500 329.0 338.0 1.027 -fcpcircle10 522.0 729.0 1.397 -fcpcircle100 486.0 578.0 1.189 -fcpellipse10 648.0 768.0 1.185 -fcpellipse100 525.0 615.0 1.171 -fellipse10 5360.0 6130.0 1.144 -fellipse100 2680.0 2690.0 1.004 -fellipse500 577.0 581.0 1.007 -fitext 84900.0 245000.0 2.886 -fspcircle10 594.0 717.0 1.207 -fspcircle100 447.0 539.0 1.206 -fspellipse10 631.0 752.0 1.192 -fspellipse100 498.0 582.0 1.169 -ftext 105000.0 338000.0 3.219 -gc 6820.0 6030.0 0.884 -getimage10 180.0 1770.0 9.833 -getimage100 94.0 435.0 4.628 -getimage500 4.4 23.6 5.364 -line1 438000.0 1100000.0 2.511 -line10 251000.0 380000.0 1.514 -line100 43200.0 45900.0 1.062 -line500 9250.0 9370.0 1.013 -map-100-kids 5030.0 3640.0 0.724 -map-16-kids 4230.0 1970.0 0.466 -map-200-kids 5100.0 3690.0 0.724 -map-25-kids 4540.0 2320.0 0.511 -map-4-kids 2660.0 1040.0 0.391 -map-50-kids 4850.0 3100.0 0.639 -map-75-kids 4940.0 3790.0 0.767 -move-100-kids 351.0 115.0 0.328 -move-16-kids 546.0 358.0 0.656 -move-200-kids 281.0 47.9 0.170 -move-25-kids 521.0 313.0 0.601 -move-4-kids 472.0 376.0 0.797 -move-50-kids 473.0 214.0 0.452 -move-75-kids 412.0 154.0 0.374 -movetree-100-kids 37200.0 30600.0 0.823 -movetree-16-kids 8220.0 6220.0 0.757 -movetree-200-kids 52700.0 3170.0 0.060 -movetree-25-kids 12500.0 10200.0 0.816 -movetree-4-kids 1790.0 1570.0 0.877 -movetree-50-kids 22400.0 18500.0 0.826 -movetree-75-kids 30700.0 25300.0 0.824 -noop 129000.0 106000.0 0.822 -osrect 267000.0 793000.0 2.970 -osrect10 163000.0 271000.0 1.663 -osrect100 8820.0 9160.0 1.039 -osrect500 433.0 436.0 1.007 -ostrap10 17700.0 76800.0 4.339 -ostrap100 6380.0 8310.0 1.303 -pcircle10 700.0 737.0 1.053 -pcircle100 571.0 604.0 1.058 -pellipse10 701.0 784.0 1.118 -pellipse100 588.0 630.0 1.071 -polytext 75400.0 207000.0 2.745 -popup-100-kids 1290.0 781.0 0.605 -popup-16-kids 1140.0 563.0 0.494 -popup-200-kids 1170.0 729.0 0.623 -popup-25-kids 1190.0 679.0 0.571 -popup-4-kids 758.0 242.0 0.319 -popup-50-kids 1360.0 797.0 0.586 -popup-75-kids 1330.0 806.0 0.606 -prop 239.0 238.0 0.996 -putimage10 2890.0 10800.0 3.737 -putimage100 196.0 1300.0 6.633 -putimage500 9.1 63.9 7.022 -rect1 269000.0 855000.0 3.178 -rect10 163000.0 276000.0 1.693 -rect100 8850.0 9240.0 1.044 -rect500 438.0 442.0 1.009 -resize-100-kids 400.0 121.0 0.302 -resize-16-kids 555.0 363.0 0.654 -resize-200-kids 305.0 56.5 0.185 -resize-25-kids 537.0 320.0 0.596 -resize-4-kids 579.0 451.0 0.779 -resize-50-kids 488.0 228.0 0.467 -resize-75-kids 446.0 163.0 0.365 -scroll10 1970.0 24600.0 12.487 -scroll100 1980.0 2740.0 1.384 -scroll500 127.0 128.0 1.008 -seg1 262000.0 804000.0 3.069 -seg10 196000.0 387000.0 1.974 -seg100 41300.0 45800.0 1.109 -seg100c1 42600.0 47200.0 1.108 -seg100c2-2-kids 38900.0 42800.0 1.100 -seg100c3-3-kids 30900.0 34300.0 1.110 -seg500 9160.0 9360.0 1.022 -srect1 268000.0 794000.0 2.963 -srect10 162000.0 272000.0 1.679 -srect100 8820.0 9160.0 1.039 -srect500 433.0 436.0 1.007 -strap10 17800.0 75700.0 4.253 -strap100 6270.0 8310.0 1.325 -tilerect1 265000.0 774000.0 2.921 -tilerect10 161000.0 269000.0 1.671 -tilerect100 8760.0 9090.0 1.038 -tilerect500 429.0 431.0 1.005 -tiletrap10 17700.0 35600.0 2.011 -tiletrap100 6310.0 5020.0 0.796 -tr10itext 100000.0 215000.0 2.150 -tr10text 127000.0 269000.0 2.118 -tr24itext 48300.0 74400.0 1.540 -tr24text 73300.0 95500.0 1.303 -trap10 17800.0 76600.0 4.303 -trap100 6290.0 8350.0 1.328 -triangle1 22200.0 101000.0 4.550 -triangle10 21600.0 75300.0 3.486 -triangle100 6310.0 7770.0 1.231 -ucirculate-100-kids 38600.0 43400.0 1.124 -ucirculate-16-kids 43800.0 47300.0 1.080 -ucirculate-200-kids 32800.0 35300.0 1.076 -ucirculate-25-kids 43600.0 47300.0 1.085 -ucirculate-4-kids 43700.0 47100.0 1.078 -ucirculate-50-kids 40600.0 43100.0 1.062 -ucirculate-75-kids 38000.0 43000.0 1.132 -ucreate-100-kids 1690.0 1680.0 0.994 -ucreate-16-kids 1680.0 1670.0 0.994 -ucreate-200-kids 1700.0 1680.0 0.988 -ucreate-25-kids 1680.0 1660.0 0.988 -ucreate-4-kids 1640.0 1630.0 0.994 -ucreate-50-kids 1670.0 1670.0 1.000 -ucreate-75-kids 1690.0 1680.0 0.994 -umove-100-kids 4600.0 4620.0 1.004 -umove-16-kids 4660.0 4650.0 0.998 -umove-200-kids 4590.0 4580.0 0.998 -umove-25-kids 4650.0 4640.0 0.998 -umove-4-kids 4670.0 4670.0 1.000 -umove-50-kids 4630.0 4630.0 1.000 -umove-75-kids 4620.0 4630.0 1.002 -unmap-100-kids 90200.0 15300.0 0.170 -unmap-16-kids 26200.0 2940.0 0.112 -unmap-200-kids 97300.0 23800.0 0.245 -unmap-25-kids 31600.0 4630.0 0.147 -unmap-4-kids 7780.0 1280.0 0.165 -unmap-50-kids 59900.0 8420.0 0.141 -unmap-75-kids 30500.0 12500.0 0.410 -uresize-100-kids 3830.0 3800.0 0.992 -uresize-16-kids 3850.0 3830.0 0.995 -uresize-200-kids 3810.0 3780.0 0.992 -uresize-25-kids 3850.0 3830.0 0.995 -uresize-4-kids 3850.0 3870.0 1.005 -uresize-50-kids 3850.0 3830.0 0.995 -uresize-75-kids 3840.0 3810.0 0.992 -wcircle10 2300.0 2640.0 1.148 -wcircle100 123.0 116.0 0.943 -wcircle500 56.1 55.2 0.984 -wdcircle100 12.4 12.2 0.984 -wddcircle100 29.7 28.3 0.953 -wddellipse100 32.7 31.9 0.976 -wddline100 719.0 953.0 1.325 -wdellipse100 14.7 14.6 0.993 -wdline100 69.6 69.5 0.999 -wellipse10 2550.0 2650.0 1.039 -wellipse100 126.0 121.0 0.960 -wellipse500 64.9 63.5 0.978 -wline10 83800.0 101000.0 1.205 -wline100 439.0 422.0 0.961 -wline500 302.0 324.0 1.073 ========================================================================= Here is the shell script to run to get the raw data; the awk script to produce the tables follows: #!/bin/sh # This is two-test.sh for comparing X11 performance with and without # Sun's Solaris 2.2 Direct Xlib product. # Usage: # ./two-test.sh # [03-Jul-1993] OPTIONS=" -dot -rect1 -rect10 -rect100 -rect500 -srect1 -srect10 \ -srect100 -srect500 -osrect -osrect10 -osrect100 -osrect500 -tilerect1 \ -tilerect10 -tilerect100 -tilerect500 -bigtilerect1 -bigtilerect10 \ -bigtilerect100 -bigtilerect500 -seg1 -seg10 -seg100 -seg500 -seg100c1 \ -seg100c2 -seg100c3 -dseg10 -dseg100 -ddseg100 -line1 -line10 -line100 \ -line500 -dline10 -dline100 -ddline100 -wline10 -wline100 -wline500 \ -wdline100 -wddline100 -circle1 -circle10 -circle100 -circle500 \ -dcircle100 -ddcircle100 -wcircle10 -wcircle100 -wcircle500 \ -wdcircle100 -wddcircle100 -pcircle10 -pcircle100 -fcircle1 -fcircle10 \ -fcircle100 -fcircle500 -fcpcircle10 -fcpcircle100 -fspcircle10 \ -fspcircle100 -ellipse10 -ellipse100 -ellipse500 -dellipse100 \ -ddellipse100 -wellipse10 -wellipse100 -wellipse500 -wdellipse100 \ -wddellipse100 -pellipse10 -pellipse100 -fellipse10 -fellipse100 \ -fellipse500 -fcpellipse10 -fcpellipse100 -fspellipse10 -fspellipse100 \ -triangle1 -triangle10 -triangle100 -trap10 -trap100 -strap10 \ -strap100 -ostrap10 -ostrap100 -tiletrap10 -tiletrap100 -complex10 \ -complex100 -ftext -tr10text -tr24text -polytext -fitext -tr10itext \ -tr24itext -scroll10 -scroll100 -scroll500 -copywinwin10 \ -copywinwin100 -copywinwin500 -copypixwin10 -copypixwin100 \ -copypixwin500 -copywinpix10 -copywinpix100 -copywinpix500 \ -copypixpix10 -copypixpix100 -copypixpix500 -copyplane10 -copyplane100 \ -copyplane500 -putimage10 -putimage100 -putimage500 -getimage10 \ -getimage100 -getimage500 -noop -atom -prop -gc -create -ucreate -map \ -unmap -destroy -popup -move -umove -movetree -resize -uresize \ -circulate -ucirculate" for f in $OPTIONS do echo Test: $f LD_LIBRARY_PATH=/usr/openwin/lib ./x11perf $f LD_LIBRARY_PATH=/opt/SUNWdxlib/lib/dxlib/SunOS5.x:/usr/openwin/bin ./x11perf $f done Here is the awk program to make the tests: # /u/sy/beebe/src/x11perf/two-tests.awk, Sat Jul 3 08:20:13 1993 # Edit by Nelson H. F. Beebe # ======================================================================== # Extract x11perf timing results from the output of two-tests.sh, and # print a table of relative performance. # Usage: # two-tests.sh | tee foo.out | nawk -f two-tests.awk # [03-Jul-1993] # ======================================================================== /^Test: / { name = $2 } $2 ~ /trep/ { gsub(/[()]/,"",$0) ops = $6 gsub(/\/sec:/,"",ops) test = ($NF == "kids") ? name "-" $(NF-1) "-kids" : name if (test in rate1) { if (!(test in rate2)) rate2[test] = ops } else rate1[test] = ops } END { for (test in rate1) printf("%-25s\t%10s\t%10s\t%s\n", test, rate1[test], rate2[test], (rate1[test] == 0) ? " -n/a- " : \ sprintf("%8.3f",rate2[test]/rate1[test])) | \ "sort +3nr -4" }