[cairo] Pixman ARM Performance

Soeren Sandmann sandmann at daimi.au.dk
Tue Jul 28 00:34:45 PDT 2009


Jacob Bramley <Jacob.Bramley at arm.com> writes:

> Yep, I mean 0.15.2, as that appeared to be a release shortly before the
> refactoring work started and I initially suspected that the refactoring
> had caused the slow-down. I have also tried the latest tip, which is
> labelled "0.15.19", and I get similar results here, so the refactoring
> does not appear to be the problem.
> 
> I should also point out that I'm not entirely sure if I'm building it
> properly. Adding "--disable-debug" to the configure command sped things
> up considerably for some reason, though I couldn't find mention of that
> anywhere in "configure --help". 
>
> There could well be other switches that
> I should apply. I'm currently using something like this:
> 
> CFLAGS="-mcpu=cortex-a8 -mfloat-abi=softfp" ../trunk/configure
> --(dis|en)able-arm-neon --(dis|en)able-arm-simd --disable-debug
> --prefix=`pwd`/inst.<build_tag>
> 
> Interestingly, building this natively on another board causes configure
> to complain that "--disable-debug" isn't recognized, though it certainly
> makes a difference when I cross-compile.

Well, there is no such option; if you add "--disable-debug" to
configure, it will just be ignored. What I think may be going on is
that "make perf" in cairo's perf directory runs at too few iterations
by default, so there can be substantial inaccuracy in the results it
provides.

Generally, what I have done is run "make perf" and then for those
cases where it produces a large difference, I have rerun the test with
a higher number of iterations by using something like 

      cairo-perf -i 500 name-of-test

cairo-trace may produce more useful test cases.

> > If you mean 0.15.12, then I would not be too surprised if there are a
> > couple of performance regressions. Some have been fixed in 0.15.18;
> > there are a couple of remaining ones on the map for 0.16.0.
> > 
> > As Chris said, if you can post the output of cairo-perf-diff for the
> > versions in question, that would be helpful. If there are large
> > performance regressions compared to 0.12.0, we'll want to look at that
> > before 0.16.0.
> 
> I cannot trivially run cairo-perf-diff-files. It's possible that I'm
> just not using the tool properly. If I run it on my build machine, it
> complains because it can't find some Scratchbox* file. If I run it
> inside Scratchbox, it can't see libcairo. Running it on-target works
> better, but then dumps junk on my terminal until I kill it.

cairo-perf doesn't build for me out of the box:

        cairo-perf-report.c:54: error: static declaration of ‘getline’ follows non-static declaration
        /usr/include/stdio.h:653: note: previous declaration of ‘getline’ was here
        cairo-perf-report.c:57: error: static declaration of ‘strndup’ follows non-static declaration
        make: *** [cairo-perf-report.lo] Error 1

After commenting those out, cairo-perf-diff-files crashes when given
your files. It probably shouldn't, although with lines like these:

[  4]    image-rgba        paint_image_rgb_over-256        890  0.890 18446744073709552.000 62.36% 100

with a clearly bogus value for the median, something is broken in the
output too. 


Soren


More information about the cairo mailing list