[cairo] fbmmx merge

Soeren Sandmann sandmann at daimi.au.dk
Sat Aug 13 08:19:21 PDT 2005

Carl Worth <cworth at cworth.org> writes:

> I tried running gearflowers.svg through to see if the patch sped
> things up considerably. At first, I found a startling result:
> 	$ time svg2png gearflowers.svg gearflowers.png
> Before fbmmx patch:
> 	real    0m4.011s
> After:	real    0m17.370s
> A 4X slowdown was rather discouraging. Daniel Schleef pointed out the
> patch uses inline quite heavily so I should compile with -O2. I did
> that and the results were less discouraging:

In fact you probably also need something like:

--param inline-unit-growth=10000 \
        --param large-function-growth=10000

to prevent gcc from deciding not to inline in some cases.

> Before fbmmx patch:
> 	real    0m3.330s
> After:	real    0m2.935s
> And here are results from an SVG file that takes a bit longer to
> render:
> 	$ time svg2png gaze.svg gaze.png
> Before fbmmx patch:
> 	real    0m40.030s
> After:	real    0m35.700s

Is this file available from somewhere?

> Anyway, the patch looks acceptable to me. The new requirement to
> compile with -O2 to get decent performance is going to annoy me a
> bit. (It basically means I'll have to consciously decide whether to be
> in debugging mode or performance testing mode. And I'll likely be in
> the wrong mode often and confuse myself with odd behavior for a
> while.) Is there any easy way to alleviate this problem?

Using just -finline without -O2 makes gcc, at least 4.0.1, inline
functions but not optimize. This doesn't seem to be documented in the
gcc manual though.


More information about the cairo mailing list