Refine bench_record and bench_playback:

  - use high-precision wall timer only
  - warm caches once before measuring
  - measure independent samples, calculating statistics
  - add --verbose to control how much data we output

Also removed some unloved features from bench_record.

BUG=skia:
R=jcgregorio@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/338203002
diff --git a/tools/Stats.h b/tools/Stats.h
new file mode 100644
index 0000000..2370084
--- /dev/null
+++ b/tools/Stats.h
@@ -0,0 +1,32 @@
+#ifndef Stats_DEFINED
+#define Stats_DEFINED
+
+struct Stats {
+    Stats(const double samples[], int n) {
+        min = samples[0];
+        max = samples[0];
+        for (int i = 0; i < n; i++) {
+            if (samples[i] < min) { min = samples[i]; }
+            if (samples[i] > max) { max = samples[i]; }
+        }
+
+        double sum = 0.0;
+        for (int i = 0 ; i < n; i++) {
+            sum += samples[i];
+        }
+        mean = sum / n;
+
+        double err = 0.0;
+        for (int i = 0 ; i < n; i++) {
+            err += (samples[i] - mean) * (samples[i] - mean);
+        }
+        var = err / (n-1);
+    }
+
+    double min;
+    double max;
+    double mean;  // Estimate of population mean.
+    double var;   // Estimate of population variance.
+};
+
+#endif//Stats_DEFINED