blob: f6b1961aaca24bd463d42e80ece678c20610bf5c [file] [log] [blame]
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 0651302..0623d61 100644
--- a/bench/nanobench.cpp
+++ b/bench/nanobench.cpp
@@ -43,6 +43,7 @@
#include "SkSVGDOM.h"
#include "SkTaskGroup.h"
#include "SkThreadUtils.h"
+#include "SkTypes.h"
#include "ThermalManager.h"
#include "SkScan.h"
@@ -1240,7 +1241,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());
@@ -1290,6 +1291,7 @@ int nanobench_main() {
benchStream.fillCurrentOptions(log.get());
target->fillOptions(log.get());
log->metric("min_ms", stats.min);
+ log->metrics("samples", samples);
#if SK_SUPPORT_GPU
if (gpuStatsDump) {
// dump to json, only SKPBench currently returns valid keys / values