Re: gtkperf regression and gtknotebook



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]