[cairo] Announcing the big cairo performance push!

Carl Worth cworth at cworth.org
Tue Aug 8 17:27:24 PDT 2006

It seems like things have been a bit too quiet here on the cairo
mailing list recently. I think that's in large part since we've been
so focused on bug squashing over the last few weeks and perhaps too
many conversations have been taking place through bugzilla rather than
the mailing list.

I've been meaning to write some updates to the list as we were
progressing toward the 1.2.2 release, but I guess I'm too late for
that now. I am quite happy with how that release went. We're
definitely maturing in our ability to define a goal/schedule for a
release and then stick to it. (For example, cairo 1.2.0 slipped many
times and was month later than the original guesses. In contrast cairo
1.2.2 was released only one day later than the first milestone date
that appeared in the ROADMAP file.)

Here's a bit of retrospective of what I consider to be the
accomplishments of the various cairo releases:

cairo 1.0	A reasonable API is in place, with "display" support
cairo 1.2.0	First real attempt at proper "printing" support
cairo 1.2.2	Fix some major mistakes in 1.2.0

A this point, we've got an API that we feel like we can live with
forever and we finally have a reasonable basis for doing both display
and print output through that API.

In my opinion, the only big thing missing to make cairo be what it
should be is to make the whole lot go a heck of a lot faster. So,
that's exactly what I'll be putting my own effort into over the next
several months.

Some of you heard me say at GUADEC at the end of June that I was going
to be launching a big effort to improve cairo performance. Well, that
got delayed a bit as we learned of some of the big, bad bugs in 1.2.0,
but now is the time for this effort to begin in earnest.

I know that some people have looked at cairo performance in the past,
(Billy Biggs, Soeren Sandmann, and David Turner are three names that
come to mind immediately). And I imagine that several of you have been
frustrated that submitted patches for improving performance haven't
been accepted yet. I am sorry about not doing more with the patches
yet. But, I really do appreciate them, and I haven't forgotten about

I've just been postponing doing performance-focused work until:

  1) We have the "correctness" of cairo more or less under control,

  2) We have something in place for tracking performance improvements

With the 1.2.2 release, I feel that the "correctness" of cairo is in
good shape, (and the cairo/test suite has been invaluable in helping
us get there).

For (2) I want to start new cairo/perf suite for tracking performance
improvements. I'm putting that together now and should have something
ready for people to start working with tomorrow. I'll start by writing
a few test cases focused on the issues raised by the stalled
performance patches I alluded to earlier.

Then, in order for this to really work, we're going to need a lot of
help from a lot of people. Useful work will include:

  * Identifying/collecting "macro benchmarks", along the lines of
    "mozilla with cairo draws the page <URL> too slow".

  * Analyzing/profiling the macro benchmarks to identify specific
    issues in cairo.

  * Writing "micro benchmarks" to exercise the specific issues
    identified as being important for the macro benchmarks. These are
    the things that will live in cairo/perf.

  * Writing new code to improve specific performance issues.

  * Writing tools to analyze and visualize the results of the
    cairo/perf test suite.

  * Running the cairo/perf test suite on as many different systems as

  * Running the cairo/perf test suite on individual systems over time to
    ensure we don't introduce performance regressions in cairo.

Lots of these pieces have been happening in isolation, but I'm really
excited to have a large, coordinated, and sustained effort to do all
of this and to do it really well. It's going to be a lot of fun, but a
lot of work, and it will require lots of people to help out. I hope
anyone interested in cairo will step up and find some part that they
can help out with.

Eventually we'll all get to the final step:

   * Enjoy a library that's fun to use and also very fast

It should be a good ride,

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/cairo/attachments/20060808/7d6a0a13/attachment.pgp

More information about the cairo mailing list