November 23, 2006
General
Comments Off
Cairo 1.3.4 is out. It includes the new tesselator and a load of floating point improvements by Daniel Armelang as stellar additions. A couple of graphs:


As you can see, the new tesselator is already kicking some ass in the GtkRadioButton case. My torturer suddenly crashes with GTK+ 2.6, so I couldn’t repeat the tests with GtkTextView for all the environments
I’ve also run jorn’s GtkLabel test with Cairo 1.3.2 and 1.3.4 (both using GTK+ 2.10.6, Pango 1.14.5):
- Cairo 1.3.2 : Drawn label 2692 times. Average time spent drawing (in seconds): 0.002095
- Cairo 1.3.4: Drawn label 2733 times. Average time spent drawing (in seconds): 0.001801
Right now I’m in the process of setting up oprofile in my hardware to get an updated status on the cairo hotspots. Hopefully that will give “slightly” more useful data
P.S: Fer and me had this sudden urge to port Sysprof to ARM. I wonder if everybody who interacts with oprofile experiences the same feeling 
November 17, 2006
General
Comments Off
Finally the first snapshot in the Cairo 1.3 series was released, and so a bit of torturing was due:

The good news is that it keeps improving. The awesome news is that there’s still a lot more coming. Hopefully I’ll start to provide useful ARM profiles soon to complement the awesome work done by Jorn on that area.
November 8, 2006
General
1 Comment
As promised, here is the code: https://garage.maemo.org/svn/plot-torturer
Btw, I tried to get the new-tesselator branch of cairo following the instructions from the mail list but got stuck in a “EOF: unexpected end of file”. Is it just me? Does anyone have a tarball of the code?
November 6, 2006
General
10 Comments
Update: Ok, as usual a paper brown bug in the first release. gtk2-10cairopatch was actually using the pangoxft GTK+ instead of stock. Now I’m using the stock version, and sadly the double to fixed patch looks slightly less impressive… anyway, we still need more like that!
As part of the ongoing work at Nokia to make GTK+ perform decently on ARM I’ve done a series of performance tests using several different versions of GTK+.
I’ve used the excelent GTK+ Theme Torturer and a home grown PyCairo plotter (which is more or less my second ever python program: comments, fixes and rewrites warmly welcome) based on the ones made by Federico.
First, the graphics:



The other widgets are GtkCheckButton, GtkEntry, GtkFrame, GtkHScale, GtkNotebook,GtkProgressBar,
GtkScrolledWindow,
GtkVScale.
Now the boring details:
- gtk2-6 is the heavily patched GTK+ 2.6 currently used in the Maemo platform. It’s here.
- gtk2-10xft is stock GTK+ 2.10.6 with this patch applied. It basically replaces pangocairo with pangoxft for text rendering. Everywhere else, it still uses Cairo (1.2.4).
- gtk2-10cairo is GTK+ 2.10.6 stock using Cairo 1.2.4.
- gtk2-10cairopatch is the same as gtk2-10cairo but cairo has this patch applied. It applies heavy wizardry (and I mean heavy) to optimize the hell out the double to fixed conversion.
All the tests were made on ARM, using the Raleigh theme.
The big empty space is the Expose-Resize test from gtk-theme-torturer. I’ve omitted it because we were getting random (as in, each time you run the tests you get completely different numbers while all the other tests appear exactly the same as before). We are trying to track this down but if anyone has any wild guess about it comments are welcome. Of course, this could also mean all my numbers are pure crap, so thake this graphs with a grain of salt.
As you can see cairo is still some way away from the 2.6 performance levels (especially on some widgets, *ahem*GtkRadioButton*ahem*), but with patches like this one it shouldn’t be too difficult to reach reasonable performance numbers. Keep up the good work!
P.S: I’ll try to make periodical updates to track the ongoing performance effort in Cairo/GTK+.
P.P.S: Thanks to fer for the top-notch hosting! 