Wireshark-dev: Re: [Wireshark-dev] Performance issues with the "new" rtp-analysis.c
From: Stephen Fisher <steve@xxxxxxxxxxxxxxxxxx>
Date: Mon, 23 Feb 2009 16:37:48 -0700
On Mon, Feb 23, 2009 at 11:32:13PM +0100, Anders Broman wrote:

> There seems to be quite a performance hit with using the TreeView 
> Widget:

> Does some one know if it's possible to tweak the code to get better 
> performance or is it best to back out the new code and retackle The 
> old bug ? https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3246 I 
> don't have a sufficently large RTP trace to test with at the moment.

There are a number of tweaks available to speed up the tree view widget.  
In my testing for replacing the main packet list (a coding project I 
should really finish up to show to others), I can get nearly the same 
speeds as the clist with the tweaks and "freezing" of the list while 
populating it along with other tweaks.  I've gone so far as to create 
custom functions to mamipulate a a GtkTreeModel for the GtkTreeView, 
which helps somewhat with speed and especially with customization.

To freeze & thaw the updating of the GtkTreeView with every update to 
the GtkTreeModel, use something like the following:

void
new_packet_list_freeze(void)
{
	/* So we don't lose the model by the time we want to thaw it */
	g_object_ref(packetlist);

	/* Detach view from model */
	gtk_tree_view_set_model(GTK_TREE_VIEW(packetlist->view), NULL);
}

void
new_packet_list_thaw(void)
{
	/* Remove the ref added by new_packet_list_freeze() */
	g_object_unref(packetlist);

	/* Re-attach view to the model */
	gtk_tree_view_set_model(GTK_TREE_VIEW(packetlist->view),
				GTK_TREE_MODEL(packetlist));
}

Also turn off automatic sizing so that the columns are a fixed with:

   gtk_tree_view_column_set_sizing(col,GTK_TREE_VIEW_COLUMN_FIXED);

I haven't looked at the code you're speaking of to see if these things 
are already done.  If we could get our hands on a big enough capture 
file, I could take a look at the code.


Steve