diff --git a/bench/ResultsWriter.h b/bench/ResultsWriter.h
index f56deae..69a84c7 100644
--- a/bench/ResultsWriter.h
+++ b/bench/ResultsWriter.h
@@ -46,6 +46,9 @@ public:
     // Record a single test metric.
     virtual void metric(const char name[], double ms) {}
 
+    // Record a list of test metrics.
+    virtual void metrics(const char name[], const SkTArray<double> &array) {}
+
     // Flush to storage now please.
     virtual void flush() {}
 };
@@ -113,6 +116,17 @@ public:
         SkASSERT(fConfig);
         (*fConfig)[name] = ms;
     }
+    void metrics(const char name[], const SkTArray<double> &array) override {
+        // The user who wrote this feature prefers NaNs over not having results.
+        // Hence, this ignores whether we have NaNs.
+        SkASSERT(fConfig);
+        Json::Value value = Json::Value(Json::arrayValue);
+        value.resize(array.count());
+        for (unsigned i = 0, e = array.count(); i != e; ++i) {
+          value[i] = array[i];
+        }
+        (*fConfig)[name] = value;
+    }
 
     // Flush to storage now please.
     void flush() override {
diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp
index ae415fa..22011cd 100644
--- a/bench/nanobench.cpp
+++ b/bench/nanobench.cpp
@@ -42,6 +42,7 @@
 #include "SkSurface.h"
 #include "SkTaskGroup.h"
 #include "SkThreadUtils.h"
+#include "SkTypes.h"
 #include "ThermalManager.h"
 
 #include <stdlib.h>
@@ -1173,7 +1174,7 @@ int nanobench_main() {
             target->setup();
             bench->perCanvasPreDraw(canvas);
 
-            int maxFrameLag;
+            int maxFrameLag = 0;
             int loops = target->needsFrameTiming(&maxFrameLag)
                 ? setup_gpu_bench(target, bench.get(), maxFrameLag)
                 : setup_cpu_bench(overhead, target, bench.get());
@@ -1197,6 +1198,7 @@ int nanobench_main() {
             benchStream.fillCurrentOptions(log.get());
             target->fillOptions(log.get());
             log->metric("min_ms",    stats.min);
             log->metric("median_ms", stats.median);
+            log->metrics("samples",    samples);
 #if SK_SUPPORT_GPU
             if (gpuStatsDump) {
                 // dump to json, only SKPBench currently returns valid keys / values
