diff options
Diffstat (limited to 'common/hashmap.cpp')
| -rw-r--r-- | common/hashmap.cpp | 31 | 
1 files changed, 31 insertions, 0 deletions
diff --git a/common/hashmap.cpp b/common/hashmap.cpp index 4749234740..99ca0713ee 100644 --- a/common/hashmap.cpp +++ b/common/hashmap.cpp @@ -89,5 +89,36 @@ uint nextTableSize(uint x) {  	return primes[i];  } +#ifdef DEBUG_HASH_COLLISIONS +static double +	g_collisions = 0, +	g_lookups = 0, +	g_collPerLook = 0, +	g_capacity = 0, +	g_size = 0; +static int g_max_capacity = 0, g_max_size = 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_capacity += arrsize; +	g_size += nele; +	g_totalHashmaps++; +	 +	g_max_capacity = MAX(g_max_capacity, arrsize); +	g_max_size = MAX(g_max_size, 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_size / g_totalHashmaps, g_max_size, +		g_capacity / g_totalHashmaps, g_max_capacity); +} +#endif  }	// End of namespace Common  | 
