<div dir="ltr">By the way, I apologize for the email volume, but I wanted to attach my latest performance tests.&nbsp; These are based on a quick and dirty &quot;render as many glyphs as possible in one second&quot; test, using the same string at the same position, run on a 2GHz Core 2 Duo.&nbsp; gdi, d3d, and gdi+ refer to other back-ends we have already implemented, performing the same operations.&nbsp; This benchmark should only include time spent rendering text, not swapping buffers or anything like that.<br>
<br>I find it quite interesting that dib is faster than ddb.&nbsp; In particular, the ExtTextOutW call is tremendously slower, and yet the DDB case seems to incur much more overhead in cairo_gstate_show_text_glyps for the DDB case.&nbsp; Is this to be expected?<br>
<br>Running a render-as-many-glyphs-in-1-sec-as-possible test:<br>&nbsp;cairo ddb:&nbsp;&nbsp;&nbsp;&nbsp; 90K g/s<br>&nbsp;cairo dib24:&nbsp; 114K g/s<br>&nbsp;cairo dib32:&nbsp;&nbsp; 66K g/s<br>&nbsp;cairo image:&nbsp;&nbsp; 75K g/s<br>&nbsp;gdi:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 965K g/s<br>&nbsp;d3d:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 49K g/s<br>
&nbsp;gdi+:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 432K g/s<br><br><br>Some timings using QueryPerformanceCounter:<br>ddb:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ExtTextOutW: last:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 avg:&nbsp;&nbsp;&nbsp; 8.5&nbsp; min:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp; max:&nbsp;&nbsp; 2163<br>&nbsp;&nbsp;&nbsp;&nbsp; cairo_show_text: last:&nbsp;&nbsp;&nbsp; 969 avg: 1012.6&nbsp; min:&nbsp;&nbsp;&nbsp; 833&nbsp; max:&nbsp; 86489<br>
&nbsp;c_gs_text_to_glyphs: last:&nbsp;&nbsp;&nbsp; 404 avg:&nbsp; 431.7&nbsp; min:&nbsp;&nbsp;&nbsp; 385&nbsp; max:&nbsp; 85762<br>&nbsp;c_gs_show_tx_glyphs: last:&nbsp;&nbsp;&nbsp; 540 avg:&nbsp; 555.0&nbsp; min:&nbsp;&nbsp;&nbsp; 420&nbsp; max:&nbsp; 58285<br><br>dib24:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ExtTextOutW: last:&nbsp;&nbsp;&nbsp; 222 avg:&nbsp; 247.7&nbsp; min:&nbsp;&nbsp;&nbsp; 198&nbsp; max:&nbsp; 15359<br>

&nbsp;&nbsp;&nbsp;&nbsp; cairo_show_text: last:&nbsp;&nbsp;&nbsp; 737 avg:&nbsp; 786.3&nbsp; min:&nbsp;&nbsp;&nbsp; 709&nbsp; max:&nbsp; 15064<br>&nbsp;c_gs_text_to_glyphs: last:&nbsp;&nbsp;&nbsp; 394 avg:&nbsp; 427.7&nbsp; min:&nbsp;&nbsp;&nbsp; 384&nbsp; max:&nbsp; 11327<br>&nbsp;c_gs_show_tx_glyphs: last:&nbsp;&nbsp;&nbsp; 314 avg:&nbsp; 332.8&nbsp; min:&nbsp;&nbsp;&nbsp; 297&nbsp; max:&nbsp;&nbsp; 9396<br>
<br>dib32:<br>&nbsp;&nbsp;&nbsp;&nbsp; cairo_show_text: last:&nbsp;&nbsp; 1203 avg: 1294.8&nbsp; min:&nbsp;&nbsp; 1167&nbsp; max:&nbsp;&nbsp; 9301<br>&nbsp;c_gs_text_to_glyphs: last:&nbsp;&nbsp;&nbsp; 397 avg:&nbsp; 430.3&nbsp; min:&nbsp;&nbsp;&nbsp; 384&nbsp; max:&nbsp;&nbsp; 5215<br>&nbsp;c_gs_show_tx_glyphs: last:&nbsp;&nbsp;&nbsp; 782 avg:&nbsp; 839.5&nbsp; min:&nbsp;&nbsp;&nbsp; 754&nbsp; max:&nbsp;&nbsp; 7481<br>
<br>image:<br>&nbsp;&nbsp;&nbsp;&nbsp; cairo_show_text: last:&nbsp;&nbsp; 1073 avg: 1145.6&nbsp; min:&nbsp;&nbsp; 1051&nbsp; max:&nbsp; 51262<br>&nbsp;c_gs_text_to_glyphs: last:&nbsp;&nbsp;&nbsp; 387 avg:&nbsp; 406.0&nbsp; min:&nbsp;&nbsp;&nbsp; 383&nbsp; max:&nbsp;&nbsp; 3776<br>&nbsp;c_gs_show_tx_glyphs: last:&nbsp;&nbsp;&nbsp; 662 avg:&nbsp; 715.1&nbsp; min:&nbsp;&nbsp;&nbsp; 640&nbsp; max:&nbsp; 50815<br>
<br><br></div>