Re: Problem with a TreeView - speed



I've already defined visited: "more precisely, call the size vfunc; it does this only to have the row heights available, but unfortunately for most cell renderers, getting their requested size, similar to a widget, will require them to render the content internally, e.g. CellRendererText will create a PangoLayout with its text, etc." for each cell for each row, like I said, when the row gets added, changed or it is simply being scrolled to.

The speed gain by not storing the data in the TreeModel (using ListStore or TreeStore or something other based on TreeModel) is minuscule compared to TreeView for each newly added row calling the size vfunc of each cell renderer for the whole row (I believe there even isn't any optimization for not rendering/size-getting what is horizontally not visible yet), which for almost all default renderers basically means rendering their content; maybe not for CellRendererPixbuf, and I'm absolutely not sure about CellRendererCombo but Text in any case yes.

On Tue, Mar 17, 2009 at 11:21 AM, Murray Cumming <murrayc murrayc com> wrote:
On Mon, 2009-03-16 at 19:49 +0100, Milosz Derezynski wrote:
> Sorry, I somehow skipped explicitly stating the point: There is no
> such thing as "invisible" rows with TreeView, because at least once,
> they will be visited. Whether you use a cell data func or not
> practically makes no difference at all, at least for that particular
> problem.

How do you define "visited"? The cellrenderers will not be rendered if
you using set_cell_data_func() and fixed-height mode. A GtkTreeIter is
nevertheless created and destroyed in a loop for each row but that's
insignificant in comparison.

And using set_cell_data_func() avoids copying your data into the model,
which is obviously a performance win.

--



--
Please note that according to the German law on data retention,
information on every electronic information exchange with me is
retained for a period of six months.
[Bitte beachten Sie, dass dem Gesetz zur Vorratsdatenspeicherung zufolge
jeder elektronische Kontakt mit mir sechs Monate lang gespeichert wird.]


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