On Mon, 2008-02-11 at 22:20 +0100, Kristian Rietveld wrote: > is there any way that giving a user a list of > 100 million items is going to be useful? I would have said "no", but someone did present to me an interesting take on the matter a few weeks ago when Davyd and I were giving the GTK & GNOME tutorial at linux.conf.au. A person approached me and whinged about TreeView performance on ludicrously large datasets (he cited "millions of rows"). I mostly spent my time explaining that he could either: a) develop an alternative navigation scheme (say, Buttons) than the scrollbars of Widget-in-ScrolledWindow, thereby only needing a ListStore with 20-30 rows in it, or b) derive a custom TreeModel subclass that lazy-loads its data as needed by the TreeView, thereby keeping the scrollbar semantics. [Davyd piped up and noted that he had used this technique in via pygtk quite successfully when dealing with large seismic data sets] Mostly the gentlemen kept complaining that ListStore should already just do this for him and seemed to be expecting us to fix it for him (that went over well, as you could imagine). He finally described his use case, though, and my scepticism abated somewhat. Apparently in the GUI on top of the Wireshark (formerly known as Ethereal) packet analyzer, people like to madly scroll up and down through a list showing a few million rows of packet dump looking for "something that changes". Hm. I'm not sure our update speed could ever be sufficient for such scrolling to actually be drawn fast enough for such cues to be noticed (though we all appreciate the efforts of anyone who profiles and can suggest improvements in our scrolling performance). But as a general thought, letting the eye scan for elements which break a pattern IS a viable form of interface. I'm not convinced that scrolling through a TreeView with 1.0e8 rows is the best way to do such a thing, but from a usability standpoint scanning is legit, and perhaps someday we can think about what we might do to help that sort of UI along. In the mean time, I'm with everyone else: ListStore is the way it is for the general purpose it serves; if one don't like it, then TreeModel is there to be subclassed. AfC Sydney -- Andrew Frederick Cowie Operational Dynamics is an operations and engineering consultancy focusing on IT strategy, organizational architecture, systems review, and change management procedures. We carry out research and development on behalf of our clients and enable successful use of open source in mission critical enterprises, worldwide. http://www.operationaldynamics.com/ Sydney New York Toronto London
Attachment:
signature.asc
Description: This is a digitally signed message part