[Scummvm-cvs-logs] SF.net SVN: scummvm:[34051] scummvm/trunk/common

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Wed Aug 20 12:19:00 CEST 2008


Revision: 34051
          http://scummvm.svn.sourceforge.net/scummvm/?rev=34051&view=rev
Author:   fingolfin
Date:     2008-08-20 10:18:59 +0000 (Wed, 20 Aug 2008)

Log Message:
-----------
Extended HashMap debug output

Modified Paths:
--------------
    scummvm/trunk/common/hashmap.cpp
    scummvm/trunk/common/hashmap.h

Modified: scummvm/trunk/common/hashmap.cpp
===================================================================
--- scummvm/trunk/common/hashmap.cpp	2008-08-20 09:15:59 UTC (rev 34050)
+++ scummvm/trunk/common/hashmap.cpp	2008-08-20 10:18:59 UTC (rev 34051)
@@ -89,5 +89,36 @@
 	return primes[i];
 }
 
+#ifdef DEBUG_HASH_COLLISIONS
+static double
+	g_collisions = 0,
+	g_lookups = 0,
+	g_collPerLook = 0,
+	g_arrsize = 0,
+	g_nele = 0;
+static int g_max_arrsize = 0, g_max_nele = 0;
+static int g_totalHashmaps = 0;
 
+void updateHashCollisionStats(int collisions, int lookups, int arrsize, int nele) {
+	g_collisions += collisions;
+	g_lookups += lookups;
+	if (lookups)
+		g_collPerLook += (double)collisions / (double)lookups;
+	g_arrsize += arrsize;
+	g_nele += nele;
+	g_totalHashmaps++;
+	
+	g_max_arrsize = MAX(g_max_arrsize, arrsize);
+	g_max_nele = MAX(g_max_nele, nele);
+
+	fprintf(stdout, "%d hashmaps: colls %.1f; lookups %.1f; ratio %.3f%%; size %f (max: %d); capacity %f (max: %d)\n",
+		g_totalHashmaps,
+		g_collisions / g_totalHashmaps,
+		g_lookups / g_totalHashmaps,
+		100 * g_collPerLook / g_totalHashmaps,
+		g_nele / g_totalHashmaps, g_max_nele,
+		g_arrsize / g_totalHashmaps, g_max_arrsize);
+}
+#endif
+
 }	// End of namespace Common

Modified: scummvm/trunk/common/hashmap.h
===================================================================
--- scummvm/trunk/common/hashmap.h	2008-08-20 09:15:59 UTC (rev 34050)
+++ scummvm/trunk/common/hashmap.h	2008-08-20 10:18:59 UTC (rev 34051)
@@ -338,6 +338,10 @@
 		  freeNode(_arr[ctr]);
 
 	delete[] _arr;
+#ifdef DEBUG_HASH_COLLISIONS
+	extern void updateHashCollisionStats(int, int, int, int);
+	updateHashCollisionStats(_collisions, _lookups, _arrsize, _nele);
+#endif
 }
 
 /**


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list