Add a g_hash_table_print_stats () helper function.
authorZoltan Varga <vargaz@gmail.com>
Sat, 28 Aug 2010 00:40:58 +0000 (02:40 +0200)
committerZoltan Varga <vargaz@gmail.com>
Sat, 28 Aug 2010 00:43:19 +0000 (02:43 +0200)
eglib/src/ghashtable.c
eglib/src/glib.h

index 6e967142654274e64805064d8252f8bf2d7b6d48..365752a539f7fe1fe05402bd6ca4592861321e93 100644 (file)
@@ -479,6 +479,27 @@ g_hash_table_destroy (GHashTable *hash)
        g_free (hash);
 }
 
+void
+g_hash_table_print_stats (GHashTable *table)
+{
+       int i, max_chain_index, chain_size, max_chain_size;
+       Slot *node;
+
+       max_chain_size = 0;
+       max_chain_index = -1;
+       for (i = 0; i < table->table_size; i++) {
+               chain_size = 0;
+               for (node = table->table [i]; node; node = node->next)
+                       chain_size ++;
+               if (chain_size > max_chain_size) {
+                       max_chain_size = chain_size;
+                       max_chain_index = i;
+               }
+       }
+
+       printf ("Size: %d Table Size: %d Max Chain Length: %d at %d\n", table->in_use, table->table_size, max_chain_size, max_chain_index);
+}
+
 gboolean
 g_direct_equal (gconstpointer v1, gconstpointer v2)
 {
index b56f3957255af9b80ca645a64980e1ebe0decafb..78bba09590a6d6cb1d464e25c4b93f88e751235c 100644 (file)
@@ -201,6 +201,7 @@ gboolean        g_hash_table_remove          (GHashTable *hash, gconstpointer ke
 guint           g_hash_table_foreach_remove  (GHashTable *hash, GHRFunc func, gpointer user_data);
 guint           g_hash_table_foreach_steal   (GHashTable *hash, GHRFunc func, gpointer user_data);
 void            g_hash_table_destroy         (GHashTable *hash);
+void            g_hash_table_print_stats     (GHashTable *table);
 
 guint           g_spaced_primes_closest      (guint x);