Ethereal-dev: [Ethereal-dev] gtk2 port performance

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Olivier Abad <oabad@xxxxxxx>
Date: Wed, 9 Oct 2002 00:09:16 +0200
I noticed that the the gtk2 port is significantly slower than the gtk1.2
GUI, so I decided to run some performance tests on various ethereal
versions. Here are my results :

I used a capture file containing 182465 frames for all these tests, and
the following different ethereal versions (which are all based on todays
CVS) :

v1 - gtk1.2 GUI
v2 - gtk2 GUI
v3 - gtk2 GUI with multithread disabled
v4 - gtk2 GUI with multithread disabled and GtkCList replaced with
     GtkTreeView for the packet_list

All these tests are run on a Linux box (Debian unstable, kernel 2.4.19,
Athlon 1.2 GHz, 256 Mo).

Test 1 : opening the capture file with a display filter which selects
only two frames (which should be GUI independent) :

ethereal v1 : 1'28
ethereal v2 : 2'25
ethereal v3 and v4 : 1'10

This shows that :
- glib2 (v3 and v4 is faster than glib1.2 (v1) ;
- glib2 with threads (v2) is slower than glib1.2 (the problem is not
  related to our update_thread : just calling g_thread_init(NULL); in
  main.c without creating any thread has the same impact on
  performance).

Test 2 : opening the capture file without any display filter :

ethereal v1 : 1'48
ethereal v2 : 3'58 : 2'40 (showed by progress window) + 1'18 (before the
                     packet_list is updated)
ethereal v3 : 2'36 : 1'28 (showed by progress window) + 1'08 (before the
                     packet_list is updated)
ethereal v4 : 6'01

This show that :
- the CList widget in gtk2 is slower, probably because gtk2 uses pango
  to display text (various messages on gtk-app-devel confirm this)
- the ListStore/TreeView replacement is painfully slow (also confirmed
  by gtk-app-devel archives).

Test 3 : sort on frame number :

all CList versions : 2"
GtkTreeView        : 35"


Conclusion : we'll have to wait until GTK2 performance improves before
we can use it as our default GUI.

Olivier

P.S. : if someone is interested by the GtkTreeView implementation of
packet_list, I can post a patch to the list, but I won't check it into
the CVS tree for now.
-- 
Mosher's Law of Software Engineering:
	Don't worry if it doesn't work right.  If everything did, you'd
	be out of a job.