Re: gtkperf regression and gtknotebook
- From: Eero Tamminen <ext-eero tamminen nokia com>
- To: performance-list gnome org
- Subject: Re: gtkperf regression and gtknotebook
- Date: Mon, 17 Jul 2006 11:30:51 +0300
Hi,
I noticed that if I then replaced the gtk-dialog-info image in the first
page's tab with a text label that the time taken to run the test was
reduced by about 5 seconds to 2.7 seconds.
This is easily explained. If you use Xephyr[1] or xresponse
to see what the test updates on screen, you can see that:
- The GtkComboBoxEntry opens a popup above the notebook tabs
- When the popup goes away, the Notebook tabs are exposed
- Expose triggers redraw for the tabs
The interesting question is why re-drawing an icon can take more time
than redrawing the text. Maybe because the icon is on the Gtk side
and needs to be transferred to the X server side first whereas the font
glyphs are most likely already cached on the X server side. AFAIK both
are blended to background by XRender on the X side.
[1] "killall -USR1 Xephyr" enables the visualization of screen updates
If I then add back in the widgets on the first page up to and including
the label called "Start" the time taken goes back up to 8.7 seconds.
This has left me very confused as it looks like adding or subtracting
widgets from a page which is not seen on the screen impacts the performance.
Any suggestions as to what is going on or how to figure out what is
going on welcome.
Speculation:
- When combobox selection is changed, it triggers queue resize
- Notebook recalculates its size and this involves requesting all tabs
for their sizes too which involves all tabs children calculating their
sizes
If this is really the case, maybe the widgets could be changed to
propagate these things upwards only if their content size changes.
Not just when the content changes.
Comments anyone?
- Eero
PS. If you look at the gtkperf code, you see that it's using random
sizes in its lines and circles test without setting the random seed
i.e. the results are therefore also random. It's good to know what
your test-case is doing when trying to interpret the results. :-)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]