Size the benchmark name column appropriately.

Nobody likes misaligned output.

Change-Id: Ifbfd7beec755e91e204426a96c054d4ea20d3fae
diff --git a/benchmarks/benchmark_main.cpp b/benchmarks/benchmark_main.cpp
index f8e85bb..cd80968 100644
--- a/benchmarks/benchmark_main.cpp
+++ b/benchmarks/benchmark_main.cpp
@@ -32,6 +32,7 @@
 typedef std::map<std::string, ::testing::Benchmark*> BenchmarkMap;
 typedef BenchmarkMap::iterator BenchmarkMapIt;
 static BenchmarkMap g_benchmarks;
+static size_t g_name_column_width = 20;
 
 static int Round(int n) {
   int base = 1;
@@ -164,7 +165,7 @@
     snprintf(full_name, sizeof(full_name), "%s", name_);
   }
 
-  printf("%-20s %10d %10" PRId64 "%s\n", full_name,
+  printf("%-*s %10d %10" PRId64 "%s\n", g_name_column_width, full_name,
          iterations, g_benchmark_total_time_ns/iterations, throughput);
   fflush(stdout);
 }
@@ -194,12 +195,16 @@
     exit(EXIT_FAILURE);
   }
 
+  for (BenchmarkMapIt it = g_benchmarks.begin(); it != g_benchmarks.end(); ++it) {
+    g_name_column_width = std::max(g_name_column_width, strlen(it->second->Name()));
+  }
+
   bool need_header = true;
   for (BenchmarkMapIt it = g_benchmarks.begin(); it != g_benchmarks.end(); ++it) {
     ::testing::Benchmark* b = it->second;
     if (b->ShouldRun(argc, argv)) {
       if (need_header) {
-        printf("%-20s %10s %10s\n", "", "iterations", "ns/op");
+        printf("%-*s %10s %10s\n", g_name_column_width, "", "iterations", "ns/op");
         fflush(stdout);
         need_header = false;
       }