Have BenchmarkBase report runs, total and average run times.
diff --git a/lib/src/benchmark_base.dart b/lib/src/benchmark_base.dart
index 9368e5a..5d32d19 100644
--- a/lib/src/benchmark_base.dart
+++ b/lib/src/benchmark_base.dart
@@ -1,6 +1,8 @@
 // Copyright 2011 Google Inc. All Rights Reserved.
 // BenchmarkBase.dart
 
+part of benchmark_harness;
+
 class BenchmarkBase {
   final String name;
 
@@ -12,15 +14,19 @@
   void run() { }
 
   // Runs a short version of the benchmark. By default invokes [run] once.
-  void warmup() {
+  int warmup() {
     run();
+    return 1;
   }
 
   // Exercices the benchmark. By default invokes [run] 10 times.
-  void exercise() {
+  int exercise() {
+    int runs = 0;
     for (int i = 0; i < 10; i++) {
       run();
+      runs++;
     }
+    return runs;
   }
 
   // Not measured setup code executed prior to the benchmark runs.
@@ -31,34 +37,40 @@
 
   // Measures the score for this benchmark by executing it repeately until
   // time minimum has been reached.
-  static double measureFor(Function f, int timeMinimum) {
+  static List measureFor(Function f, int timeMinimum) {
     int time = 0;
     int iter = 0;
+    int runs = 0;
     Stopwatch watch = new Stopwatch();
     watch.start();
     int elapsed = 0;
     while (elapsed < timeMinimum) {
-      f();
+      int r = f();
+      runs += r;
       elapsed = watch.elapsedMilliseconds;
       iter++;
     }
-    return 1000.0 * elapsed / iter;
+    return [1000.0 * elapsed / iter, runs];
   }
 
   // Measures the score for the benchmark and returns it.
-  double measure() {
+  List measure() {
     setup();
     // Warmup for at least 100ms. Discard result.
-    measureFor(() { this.warmup(); }, 100);
+    measureFor(() { return this.warmup(); }, 100);
     // Run the benchmark for at least 2000ms.
-    double result = measureFor(() { this.exercise(); }, 2000);
+    List result = measureFor(() { return this.exercise(); }, 2000);
     teardown();
     return result;
   }
 
   void report() {
-    double score = measure();
-    print("$name(RunTime): $score us.");
+    List result = measure();
+    double score = result[0];
+    int runs = result[1];
+    print("$name(TotalRunTime): $score us.");
+    print("$name(Runs): $runs.");
+    print("$name(AverageRunTime): ${score/runs} us.");
   }
 
 }