From Didier Gautheron:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 13 Sep 2009 16:11:11 +0000 (16:11 +0000)
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 13 Sep 2009 16:11:11 +0000 (16:11 +0000)
optimizations patch http://wiki.wireshark.org/Development/Optimization
'patch.29854.diff.gz"

Speed up sorting.

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@29879 f5534014-38df-0310-8fa8-9805f1628bb7

gtk/gui_utils.c

index 2a34a504d7f96eba21132ffc1a57730d1ec56147..49740f025d4b2c8f7f7d89bbd04400a0d4517f3e 100644 (file)
@@ -1209,7 +1209,7 @@ str_ptr_data_func (GtkTreeViewColumn *column _U_,
                            GtkTreeModel      *model,
                            GtkTreeIter       *iter,
                            gpointer           user_data)
-   {
+ {     
         const gchar *str = NULL;
 
         /* The col to get data from is in userdata */
@@ -1237,11 +1237,15 @@ str_ptr_sort_func(GtkTreeModel *model,
      gtk_tree_model_get(model, a, data_column, &str_a, -1);
      gtk_tree_model_get(model, b, data_column, &str_b, -1);
 
-       if (str_a == NULL || str_b == NULL){
-               if (str_a == NULL && str_b == NULL)
-                       return 0;
+       if (str_a == str_b) {
+               /* it's worth testing because a lot of row point to 
+                  the same data */
+               return 0;
+       } 
+       else if (str_a == NULL || str_b == NULL) {
                ret = (str_a == NULL) ? -1 : 1;
-       }else{
+       } 
+       else {
                ret = g_ascii_strcasecmp(str_a,str_b);
        }
        return ret;