[cairo] Re: 1.1.6 to 1.2.0 performance

Jason Lynch jason at aexoden.com
Fri Jul 14 22:03:36 PDT 2006


On Wed, 12 Jul 2006 07:45:43 -0700, Carl Worth wrote:

> On Tue, 11 Jul 2006 16:21:57 +0530, "Ujjwal Dasgupta" wrote:
>> I use Cairo/GTK+ on an old linux box. I was using the development
>> (1.1.6) version of cairo for a while, till I switched to 1.2.0 stable. I
>> found the new version was noticable slower than the development version
>> (and to a lesser extent, version 1.0.4).
> 
> Thanks for the report.
>

I had also noticed some performance regressions when upgrading to 1.0.4 to
1.2.0. The problem was most apparent in x-chat, where scrolling the main
text window became very sluggish.

Having noticed Ujjwal's post (and learning about gtkperf), I went ahead
and ran gtkperf constantly using git bisect. There were two distinct
classes of results:

For 1.0.4, the entire test suite would complete (500 test rounds) in about
127 seconds. This varied by up to perhaps 2 or 3 seconds in either
direction on repeated tests. For 1.2.0, the entire test suite (again with
500 test rounds) took instead approximately 156 seconds. A very clear
difference.

After a bit of time with git bisect, I traced the regression to the
following commit:

92a015ff8ec5c11aac6d9c0c6702fa4873c04381 is first bad commit
commit 92a015ff8ec5c11aac6d9c0c6702fa4873c04381
Author: Vladimir Vukicevic <vladimir at cyclone.vlad1.com>
Date:   Mon Mar 27 13:49:58 2006 -0800

    [xlib] only do glyph extents computation if non-solid source.

    xlib_show_glyphs was always calculating the glyph extents, even when it
    didn't need to; this only does it when necessary.

    Also adds an implementation of surface_flush() for xlib that just calls
    XSync.
    (cherry picked from 8770ac5b5cdba8007c4c6a6a980e6e06acf6aeb6 commit)

I haven't yet had the opportunity to see if this helps with x-chat, but
it's the dividing line with gtkperf, at least.

Jason



More information about the cairo mailing list