On 16 December 2011 10:36, <jcup...@gmail.com> wrote: > 2011/12/16 John Lindgren <john.lindg...@aol.com>: >> Lately I have been trying to improve the performance with large >> playlists (i.e. on the order of 100,000 entries). The one remaining >> problem spot seems to be GtkTreeView. I am attaching a simple test >> program that creates a GtkTreeView with 3 columns and 100,000 rows. >> With GTK+ 3.2.2, the program uses 29 seconds of CPU time before reaching >> idle, on a 2 GHz Core 2 Duo. (GTK+ 2.24.8 is considerably better, at 10 >> seconds, but still too slow for practical use.) Is there any way that >> GtkTreeView can be made usable for such long lists? > > I remember when the treeview system was being built one of the aims > was to make it (fairly) easy to write your own model.
I'm so sorry, I hadn't actually read your code, I now see you're already doing exactly this. I did notice that you forgot to put the treeview into fixed-height mode. Normally, treeview lets rows vary in height (so you can change font between rows, for example). To make this work, treeview has a idle task which scans the entire model after it's been realized and calculates a total height for the view, updating an initial guess. This is the thing that's causing your terrible performance problems. On my elderly desktop I see your test window almost immediately, but it takes 50s for the CPU to drop to zero as it requests the height of every row. If i add this line after creating the columns: gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (list), TRUE); The window appears instantly and there is no background CPU churn. John _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list