Add simple debug hit rate counter
authorMarco Costalba <mcostalba@gmail.com>
Sat, 6 Sep 2008 10:22:10 +0000 (12:22 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 6 Sep 2008 10:22:10 +0000 (12:22 +0200)
Add a very simple debug framework to
measure the hit rate of a given condition.

Simply insert macro

dbg_hit_on(x);

Anywhere you want to compute hit rate of condition x
and then call, as example in poll(), function
dbg_print_hit_rate() to print current results.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/misc.cpp
src/misc.h

index a2dc53a..c58c9df 100644 (file)
@@ -38,15 +38,31 @@ int gettimeofday(struct timeval * tp, struct timezone * tzp);
 
 #include <cstdio>
 #include <iomanip>
+#include <iostream>
 #include <sstream>
 
 #include "misc.h"
 
 
+////
+//// Variables
+////
+
+long dbg_cnt0 = 0;
+long dbg_cnt1 = 0;
+
+
 //// 
 //// Functions
 ////
 
+void dbg_print_hit_rate() {
+    
+  std::cout << "Total " << dbg_cnt0 << " Hit " << dbg_cnt1
+            << " hit rate (%) " << (dbg_cnt1*100)/(dbg_cnt0 ? dbg_cnt0 : 1)
+            << std::endl;
+}
+
 /// engine_name() returns the full name of the current Glaurung version.
 /// This will be either "Glaurung YYMMDD" (where YYMMDD is the date when the
 /// program was compiled) or "Glaurung <version number>", depending on whether
index d629045..e156c08 100644 (file)
@@ -56,5 +56,13 @@ extern int get_system_time();
 extern int cpu_count();
 extern int Bioskey();
 
+////
+//// Debug
+////
+extern long dbg_cnt0;
+extern long dbg_cnt1;
+extern void dbg_print_hit_rate();
+
+#define dbg_hit_on(x) { dbg_cnt0++; if (x) dbg_cnt1++; }
 
 #endif // !defined(MISC_H_INCLUDED)