g_type_instance_is_a (was Cairo 1.3 performance loss)



On 1/24/07, Jorn Baayen <jorn openedhand com> wrote:
Hi,

Comparing cairo 1.2.4 and 1.3.12 on ARM, a performance loss of 2% is
observed when drawing GTK+ widgets[1]. On closer inspection, it turns
out that the new tessellator may be to blame.
...
[1] http://folks.o-hand.com/~jorn/cairo-benchmarks/

You didn't mention that in that same test, the other widget (gtklabel)
sees a performance increase with cairo 1.3.12 :)

So, the tessellator behavior that you're seeing is interesting and
deserves some looking into. But I can't help but notice in your
profiles that g_type_instance_is_a takes up 3x the CPU that the
tessellator does. And with the old tessellator, g_type_instance_is_a
takes 9x the CPU the tessellator does. Now, I'm not a GTK guru, and I
have a lot of confidence in the GTK developers, so what's the story?

FYI, top callers (in descending order) of g_type_instance_is_a are:

gdk_window_invalidate_maybe_recurse
gdk_window_begin_paint_region
gdk_drawable_get_screen
gtk_widget_style_get
pango_font_get_metrics

Dan



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]