One of my widgets has a treeview (using a ListStore) which needs to
get completely rebuilt based on some user event. I was doing some
profiling on the code and realised that a lot of time is being spent
in the Gtk2::ListStore::clear call.
I wrote a stripped down version of the code (attached) which purely
clears the model and rebuilds the model based on two button clicks.
Here is the profiler output on that script. (after a few clear and
re-populate calls)
# ------------------------------------ #
Total Elapsed Time = 13.69850 Seconds
User+System Time = 6.208508 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
54.2 3.366 6.360 1 3.3660 6.3597 Gtk2::main
23.2 1.441 1.441 4 0.3602 0.3602 Gtk2::ListStore::clear
17.0 1.061 1.061 50000 0.0000 0.0000 Gtk2::ListStore::set
13.5 0.843 0.843 50000 0.0000 0.0000 Gtk2::ListStore::append
1.29 0.080 0.080 1 0.0800 0.0800 Gtk2::Widget::show_all
0.48 0.030 0.030 3 0.0100 0.0100 DynaLoader::dl_load_file
0.48 0.030 0.119 6 0.0050 0.0198 main::BEGIN
0.32 0.020 0.020 1 0.0200 0.0200 Gtk2::TreeView::new_with_model
0.32 0.020 0.020 1 0.0200 0.0200 Gtk2::bootstrap
0.16 0.010 0.010 1 0.0100 0.0100 Gtk2::init
0.16 0.010 0.010 1 0.0100 0.0100 Gtk2::TreeView::insert_column_with
_attributes
0.16 0.010 0.010 1 0.0100 0.0100 Gtk2::ScrolledWindow::new
0.16 0.010 0.010 3 0.0033 0.0033 overload::OVERLOAD
0.16 0.010 0.010 1 0.0100 0.0100 XSLoader::load
0.16 0.010 0.029 4 0.0025 0.0074 Gtk2::BEGIN
# ------------------------------------ #
Is there a way that I can speed up the clearing step ?
Any other tips on speeding up the script will be appreciated too.
Ofey.
Attachment:
tree.pl
Description: Binary data