[cairo] Using cairo-perf to measure changes in system configuration

Carl Worth cworth at cworth.org
Thu Apr 26 11:48:16 PDT 2007

I recently pushed out a series of improvements to the report-
generating programs in cairo-perf.

Specifically I've updated cairo-perf-diff-files to that it can
generate a report from more than two files. Previously, this program
could compare two performance reports and indicate speedups or
slowdowns from the old to the new, (you've all seen the little utf-8
bar charts I've posted here in that style).

The new style compares the same backends across more than two separate
runs of cairo-perf. For example, after running cairo-perf against 4
different X servers with different configurations, I used
cairo-perf-diff-files as follows:

./cairo-perf-diff-files exa.perf xaa.perf xaa-nop.perf noaccel.perf

To generate a report that includes sections like this[*]:

subimage_copy (backend: xlib-rgb, size: 512)
     exa   0.07: 88.49x ███████████████████████████████████████████▊
     xaa   0.10: 62.89x ███████████████████████████████
 xaa-nop   6.28:  1.00x 
 noaccel   0.07: 95.74x ███████████████████████████████████████████████▍

paint_similar_rgba_over (backend: xlib-rgba, size: 256)
     exa   2.81: 63.18x ███████████████████████████████▏
     xaa 177.42:  1.00x 
 xaa-nop  36.87:  4.81x █▉
 noaccel  36.86:  4.81x █▉

paint_similar_rgb_source (backend: xlib-rgba, size: 512)
     exa  14.28: 13.23x ██████▏
     xaa 188.89:  1.00x 
 xaa-nop   5.97: 31.63x ███████████████▍
 noaccel   5.97: 31.62x ███████████████▎

So this is nice for comparing how the same backend behaves when
something external to cairo is changed. (I was using X server
configuration here, but one could imagine doing similar comparisons
with different processor architectures, or whatever.)

One thing that this doesn't yet easily accommodate is running
comparisons of different cairo backend performance with the same
system configuration, (though you could certainly fake that now by
just changing the data files to indicate some identical bogus backend
name and put the real backend names in the filenames of the reports to
be compared).

Anyway, the code to do all of this is really grotty, and I don't
recommend anyone actually try to improve it. If anybody wanted to
re-implement it from scratch in a more sane approach, (with the same
basic calling interface and similar output), then that might make for
a more useful basis for extending this stuff in the future.

Anyway, I hope some of you might find this to be useful.


[*] If you're interested in seeing more details about the comparisons
of EXA and XAA which motivated this work, here's the thread I recently
started on that:

-------------- 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/20070426/f7afd078/attachment.pgp

More information about the cairo mailing list