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.