dynamic metrics report width
authorEvan Martin <martine@danga.com>
Fri, 6 Jan 2012 18:07:45 +0000 (10:07 -0800)
committerEvan Martin <martine@danga.com>
Fri, 6 Jan 2012 20:52:17 +0000 (12:52 -0800)
src/metrics.cc

index 07caade..1c7b7de 100644 (file)
@@ -96,13 +96,20 @@ Metric* Metrics::NewMetric(const string& name) {
 }
 
 void Metrics::Report() {
-  printf("%-10s\t%-6s\t%9s\t%s\n",
+  int width = 0;
+  for (vector<Metric*>::iterator i = metrics_.begin();
+       i != metrics_.end(); ++i) {
+    width = max((int)(*i)->name.size(), width);
+  }
+
+  printf("%-*s\t%-6s\t%9s\t%s\n", width,
          "metric", "count", "total (ms)" , "avg (us)");
-  for (vector<Metric*>::iterator i = metrics_.begin(); i != metrics_.end(); ++i) {
+  for (vector<Metric*>::iterator i = metrics_.begin();
+       i != metrics_.end(); ++i) {
     Metric* metric = *i;
     double total = metric->sum / (double)1000;
     double avg = metric->sum / (double)metric->count;
-    printf("%-10s\t%-6d\t%-8.1f\t%.1f\n", metric->name.c_str(),
+    printf("%-*s\t%-6d\t%-8.1f\t%.1f\n", width, metric->name.c_str(),
            metric->count, total, avg);
   }
 }