Hi,
I wanted to do it since Andreas posted it. I simply never got the
time. Well, here it is, finally. I reformatted the benchmark results so
that they are sorted on the ratio windows score/wine score. The idea
being that it makes it clearer where are our weak points.
Well, the results speak for themselves.
Actually no. Like all benchmarks the hardest part is to analyze the
results and come to the right conclusions. I won't pretend to present
any conclusion, just some more questions (which maybe are best left
open, I don't want to start a flamewar or something).
* I sorted the entries from our worst performance to the best on the
assumption that our results would benefit most from improving these
first. But then the benchmark must assign some sort of weight to each
test so if their range is large this may not be true.
* Is optimizing the code based on these results really that good for
real life performance for 16bit applications. For instance, is
optimizing bit blits that important? Well, I guess this depends on the
benchmark's weights for each test and how good this benchmark is (was)
in the first place.
* This is a 16bit benchmark but nowadays most applications are 32bits.
To what extent do these results reflect the performance we would get
with a 32bit application?
* In any case this benchmark it only tests graphical so it only
presents a small view into Wine's performance.
* I was surprised (and still am) by the result we got on MoveTo
(MoveTo16 really). According to the test we are 11 times slower than
Windows? Yet MoveTo does not seem to be an API that does much. Of course
MoveTo is a very fast API in any case so this probably does not affect
our performance much in real life. What I wondered is how much of it
could be explained by general 'setup costs' (DC_GetDCUpdate,
GDI_ReleaseObj, system call?)
* Most font based results are probably not very significant. If Wine
chose a replacement font that was bigger than that of Windows it would
have an impact on its performance. It could go the other way too of
course.
Well, on to the sorted results now (and thanks Andreas for providing
us with this data):
Ratio Win Wine Test
207.92 105.0 0.5 BltDIBits 4bpp
197.65 101.0 0.5 BltDIBits 24bpp
131.12 257.0 2.0 BitBltMonoMS SRCINVERT Al
115.26 98.2 0.9 GWM/PolyLine
115.12 236.0 2.0 BitBltMonoMS SRCINVERT Unal
95.76 158.0 1.6 GWM/BitBltMonoMS, SRCAND, Al
90.91 260.0 2.9 GWM/BitBltMS, Other, Al
89.66 104.0 1.2 BltDIBits 8bpp
64.75 395.0 6.1 BitBltSM, SRCCOPY, Al
64.27 349.0 5.4 BitBltSM SRCCOPY Al
63.21 122.0 1.9 BitBltSS SRCINVERT Al
61.33 0.4 0.0 Pixel, Get
58.01 210.0 3.6 GWM/PatBlt, ROP(0A), Unal
56.13 316.0 5.6 BitBltSM SRCCOPY Unal
55.61 114.0 2.0 BitBltSS SRCINVERT Unal
52.48 159.0 3.0 BitBltMS SRCINVERT Al
46.87 389.0 8.3 GWM/BitBltMS, SRCCOPY, Unal
46.62 64.8 1.4 GWM/BitBltMS, Other, Unal
46.27 149.0 3.2 BitBltMS SRCINVERT Unal
42.34 26.8 0.6 GrayString, System
41.68 27.8 0.7 DrawIcon
41.39 149.0 3.6 Combined GWM2
39.95 175.0 4.4 BitBltSM SRCINVERT Al
39.86 342.0 8.6 BitBltMS SRCCOPY Al
39.19 48.6 1.2 GWM/BitBltMonoMS, Other, Unal
39.15 91.6 2.3 SetDIBitsToDevice 4
36.92 395.0 10.7 GWM/BitBltMS, SRCCOPY, Al
35.40 160.0 4.5 BitBltSM SRCINVERT Unal
33.39 40.4 1.2 GWM/PatBlt, Other, Unal
33.19 84.3 2.5 SetDIBitsToDevice 24
32.78 316.0 9.6 BitBltMS SRCCOPY Unal
30.05 12.5 0.4 StretchDIBits, 4
28.82 24.7 0.9 GrayString, MS SSerif 13
27.69 29.9 1.1 BltDIBits 1bpp SRCCOPY Unal
26.85 92.9 3.5 GWM/SetDIBitsToDev, 4bpp, Unal
26.21 2700.0 103.0 PaintRgn, Rectangular
24.96 16.7 0.7 GrayString, MS SSerif 11
24.23 205.0 8.5 TextOut, TNR 13
24.12 27.5 1.1 GrayString, TNR 16
24.04 25.0 1.0 GWM/PatBlt, ROP(A0), Unal
23.82 5240000.0 220000.0 GetNearestColor
23.01 19.9 0.9 GrayString, TNR 13
22.44 114.0 5.1 SetDIBitsBlt 1bpp Unal
22.41 17.1 0.8 GrayString, TNR 11
22.35 89.4 4.0 SetDIBitsToDevice 8
21.84 15.4 0.7 GrayString, MS SSerif Bold 11
21.52 24.1 1.1 PolyLine
20.27 195.0 9.6 TextOut, System
19.76 14.8 0.7 StretchDIBits, 1bpp, SRCCOPY,..
18.50 72.7 3.9 GWM/PatBlt, ROP(A5), Unal
18.47 17.2 0.9 GWM/StretchBltMonoMS SRCAND Unal
18.37 55.3 3.0 GWM/PatBlt, PATINVERT Unal
18.32 17.2 0.9 GWM/StretchBltMonoMS SRCPAINT, ...
18.23 51.4 2.8 GWM/PatBlt, PATINVERT Al
18.05 168.0 9.3 GWM/ExtTextOut, Times New Roman 13
17.77 7.2 0.4 StretchDIBits, 24
16.81 607.0 36.1 GWM/FillRgn, Rectangular
16.73 169.0 10.1 TextOut, Arial 10
15.44 193.0 12.5 TextOut, Times New Roman 11
Ratio Win Wine Test
15.42 16.5 1.1 StretchDIBits, 4bpp, SRCCOPY..
15.11 113.0 7.5 TabbedTextOut, System
14.62 111.0 7.6 DrawText, System
14.39 3080.0 214.0 PatBlt, PATCOPY, Al
14.23 68.0 4.8 SetDIBitsBlt 4bpp
14.00 3010.0 215.0 PatBlt, PATCOPY, Unal
13.73 445.0 32.4 Combined GWM7
13.49 11.1 0.8 StretchDIBits, 8
13.33 136.0 10.2 TextOut, MS SSerif 11
13.11 1350.0 103.0 GWM/PatBlt, PATCOPY Unal
12.60 184.0 14.6 TextOut, MS SSerif 13
11.40 520.0 45.6 Combined GWM6
11.24 398.0 35.4 Combined GWM1
11.06 7810000.0 706000.0 MoveTo
10.77 407.0 37.8 Graph WinMark
10.58 65.5 6.2 SetDIBitsBlt 24bpp
10.41 252.0 24.2 TextOut, TNR 16
10.36 231.0 22.3 Rectangle, Rounded
10.21 196.0 19.2 GWM/ExtTextOut, System
10.17 1.8 0.2 FloodFill
10.14 35.8 3.5 GWM/Square
10.11 1.8 0.2 ExtFloodFill, Border
9.94 30.7 3.1 SetDIBitsToDevice 1bpp Unal
9.93 14.8 1.5 GWM/Square, Rounded
9.92 3520.0 355.0 PatBlt, BLACKNESS, Al
9.86 65.5 6.6 SetDIBitsBlt 8bpp
9.81 104.0 10.6 TabbedTextOut, MS SSerif 13
9.77 3450.0 353.0 PatBlt, BLACKNESS, Unal
9.71 3310.0 341.0 PatBlt, WHITENESS Unal
9.60 1.7 0.2 EFF, Surface
9.47 3230.0 341.0 PatBlt, WHITENESS Al
9.37 104.0 11.1 DrawText, MS Sans Serif 13
9.31 230.0 24.7 GWM/PatBlt, BLACKNESS, Unal
9.00 65.7 7.3 DrawText, Times New Roman 13
8.94 445.0 49.8 GWM/ExtTextOut, Rectangle
8.84 130.0 14.7 GWM/ExtTextOut, Square
8.78 6290000.0 716000.0 MoveToEx
8.66 67.6 7.8 TabbedTextOut, MS SSerif 11
8.65 44.2 5.1 GWM/Rectangle, Rounded
8.31 59.0 7.1 TabbedTextOut, TNR 13
8.26 66.5 8.1 DrawText, MS Sans Serif 11
8.01 7180.0 896.0 GWM/PatBlt, WHITENESS, Unal
7.79 1940.0 249.0 PaintRgn, Polygonal
7.30 1730.0 237.0 Square
6.88 236.0 34.3 Square, Rounded
6.76 23.2 3.4 BitBltMonoMS Other Al
6.71 7180.0 1070.0 GWM/PatBlt, WHITENESS, Al
6.59 178.0 27.0 GWM/ExtTextOut, MS SSerif 13
6.52 75.0 11.5 Combined GWM3
6.50 132.0 20.3 GWM/ExtTextOut, MS SSerif 11
6.44 389.0 60.4 BitBltSM, SRCCOPY, Unal
6.33 69.6 11.0 TextOut, MS SSerif Bold 11
6.30 22.5 3.6 BitBltMonoMS Other Unal
6.12 150.0 24.5 GWM/ExtTextOut, Times New Roman 11
5.86 252.0 43.0 Combined GWM5
5.74 47.4 8.3 InvertRect, Square
5.49 35.4 6.5 FillRect, Square
5.42 53.5 9.9 DrawText, Times New Roman 11
5.21 374.0 71.8 PaintRgn, Few-Sides, HV
Ratio Win Wine Test
5.18 49.3 9.5 Ellipse
5.04 48.2 9.6 TabbedTextOut, TNR 11
5.04 39.4 7.8 FrameRect, Square
4.93 93.2 18.9 DrawText, Times New Roman 16
4.91 27.6 5.6 Chord Elliptical
4.91 212.0 43.2 GWM/ExtTextOut, Times New Roman 16
4.90 40.8 8.3 TabbedTextOut, MS SSerif Bold...
4.88 13.9 2.9 StretchBltMonoMS, Other, Al
4.87 42.2 8.7 DrawText, MS Sans Serif Bold 11
4.78 6.0 1.3 Arc Ell Complete
4.66 84.9 18.2 TabbedTextOut, TNR 16
4.63 89.8 19.4 FrameRect
4.63 329.0 71.1 Polygon, Few-Sides
4.58 21.4 4.7 DrawFocusRect
4.54 37.9 8.3 Line, Diagonal
4.48 292.0 65.2 FillRgn, Few-Sides, HV
4.48 3.9 0.9 Arc Ell Partial
4.46 12.9 2.9 StretchBltMonoMS, Other, Unal
4.43 20.1 4.5 GWM/Line, Vertical
4.39 43.8 10.0 Line, Horizontal
4.38 36.0 8.2 Line, Vertical
4.35 336.0 77.3 GWM/BitBltMonoMS, SRCCOPY Al
4.28 396.0 92.5 BitBltMonoMS SRCCOPY Unal
4.24 396.0 93.4 BitBltMonoMS SRCCOPY Al
4.17 106.0 25.4 PolyPolygon
4.15 46.9 11.3 GWM/Line, Horizontal
4.06 6.0 1.5 GWM/Line, Diagonal
4.02 25.8 6.4 GWM/Pie, Elliptical
4.01 115.0 28.7 Polygon, Many-Sides
3.96 515.0 130.0 GWM/BitBltMonoMS, SRCCOPY Unal
3.88 178.0 45.9 Combined GWM4
3.88 442.0 114.0 FillRect
3.79 0.8 0.2 Pixel, Set
3.75 8.0 2.1 BitBltMonoSM SRCCOPY Al
3.71 519.0 140.0 Polygon, Trapezoid
3.62 1260.0 348.0 GWM/Rectangle
3.50 721.0 206.0 Rectangle
3.46 74.3 21.5 GWM/ExtTextOut, SSerif Bold
3.34 2600.0 779.0 GWM/PatBlt, PATCOPY Al
3.32 472.0 142.0 GWM/PatBlt, DSTINVERT, Unal
3.29 5.3 1.6 Arc Circular Complete
3.19 17.1 5.4 Pie, Elliptical
2.97 27.9 9.4 Chord Circular
2.85 50.3 17.6 Circle
2.83 2.4 0.8 GWM/StretchBltMS, SRCCOPY Unal
2.73 185.0 67.8 InvertRgn, Few-Sides, HV
2.67 344.0 129.0 Polygon, Triangle
2.30 108.0 47.0 PaintRgn, Few-Sides, HVD
2.25 232.0 103.0 BitBltSS SRCCOPY Al
2.24 3.0 1.3 GWM/BitBltMonoSM, SRCCOPY, Unal
2.23 207.0 92.7 GWM/FillRgn, Polygonal
2.22 7.8 3.5 BitBltSS Other Al
2.20 3.5 1.6 Arc Circular Partial
2.13 133.0 62.3 GWM/Ellipse
2.04 212.0 104.0 BitBltSS SRCCOPY Unal
2.03 17.6 8.7 Pie, Circular
2.02 7.1 3.5 StretchBltMonoSM, Other, Al
1.92 6.9 3.6 StretchBltMonoSM, Other, Unal
1.82 197.0 108.0 BitBltSS, SRCCOPY, Al
Ratio Win Wine Test
1.78 287.0 161.0 PatBlt, PATINVERT Al
1.77 193.0 109.0 BitBltSS, SRCCOPY, Unal
1.71 8.1 4.7 GWM/BitBltMonoSM, SRCCOPY, Al
1.63 263.0 161.0 PatBlt, PATINVERT Unal
1.55 213.0 137.0 GWM/InvertRgn, Rectangular
1.53 4.7 3.1 BitBltMonoSM Other Al
1.52 338.0 223.0 GWM/PatBlt, DSTINVERT, Al
1.43 7.6 5.3 BitBltMS Other Aligned
1.42 3.1 2.1 BitBltMonoSM SRCCOPY Unal
1.36 211.0 155.0 ScrollDC
1.35 288.0 213.0 PatBlt, DSTINVERT, Al
1.32 2.8 2.1 BitBltMonoSM PATPAINT Al
1.32 7.4 5.6 BitBltMS Other Unal
1.32 4.1 3.1 BitBltMonoSM Other Unal
1.32 2.8 2.1 BitBltMonoSM SRCINVERT Al
1.30 2.8 2.1 BitBltMonoSM PATPAINT Unal
1.29 2.8 2.1 BitBltMonoSM SRCINVERT Unal
1.22 264.0 216.0 PatBlt, DSTINVERT, Unal
1.19 7.6 6.4 BitBltSM Other Al
1.14 7.4 6.5 BitBltSM Other Unal
1.03 2.3 2.3 StretchBltSS, Other, Al
0.95 1.8 1.9 BitBltMonoMS PATPAINT Al
0.94 7.8 8.2 FrameRgn, Few-Sides, HV
0.94 2.1 2.2 StretchBltSS, Other, Unal
0.91 1.8 2.0 BitBltMonoMS PATPAINT Unal
0.81 2.3 2.9 StretchBltMS, Other, Al
0.80 215.0 270.0 InvertRect
0.76 4.3 5.7 TextOut, Arial 10, 90
0.75 2.1 2.8 StretchBltMS, Other, Unal
0.69 2.3 3.4 StretchBltSM, Other, Al
0.67 2.1 3.1 StretchBltSM, Other, Unal
0.56 3.1 5.5 TextOut, Arial 10, 45
0.36 0.7 1.9 BitBltSS PATPAINT Al
0.36 7.8 21.9 BitBltSS Other Unal
0.34 0.7 2.0 BitBltSS PATPAINT Unal
0.22 0.7 3.1 BitBltMS PATPAINT, Unal
0.16 0.7 4.3 BitBltSM PATPAINT Al
0.15 0.7 4.4 BitBltSM PATPAINT Unal
0.06 0.7 11.5 BitBltMS PATPAINT, Al
0.00 0.0 57.7 FastWindowFrame
--
Francois Gouget [EMAIL PROTECTED] http://fgouget.free.fr/
Avoid the Gates of Hell - use Linux.