[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