diff options
author | George Burgess IV <gbiv@google.com> | 2016-12-06 10:53:52 -0800 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-12-06 21:48:42 +0000 |
commit | 75b5718d2054b2545a42303a47f5aaf200787c71 (patch) | |
tree | b951f1dd85d5489f025d43d3b79b26fdc0f473ef | |
parent | c57c7c948a851fe792a504207fcf530da573cc59 (diff) |
nanobench: Add per-run time reporting.
This patch adds per-benchmark-iteration times to our JSON output. Given that we
already collect these statistics, giving them to the user would be nice.
No unit-test provided, since `rgrep -i json tests` yielded nothing. Happy to add
one if someone wants.
BUG=None.
TEST=nanobench now writes per-run timinings with the output JSON.
Change-Id: I910f1d97fd3e0ee69fc8e78e011e67b9c866f18d
Reviewed-on: https://skia-review.googlesource.com/5617
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Ravi Mistry <rmistry@google.com>
-rw-r--r-- | bench/ResultsWriter.h | 13 | ||||
-rw-r--r-- | bench/nanobench.cpp | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/bench/ResultsWriter.h b/bench/ResultsWriter.h index dc50ace560..1d6dc3eef1 100644 --- a/bench/ResultsWriter.h +++ b/bench/ResultsWriter.h @@ -47,6 +47,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() {} }; @@ -114,6 +117,16 @@ public: SkASSERT(fConfig); (*fConfig)[name] = ms; } + void metrics(const char name[], const SkTArray<double>& array) override { + SkASSERT(fConfig); + Json::Value value = Json::Value(Json::arrayValue); + value.resize(array.count()); + for (int i = 0; i < array.count(); i++) { + // Don't care about nan-ness. + value[i] = array[i]; + } + (*fConfig)[name] = std::move(value); + } // Flush to storage now please. void flush() override { diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp index 5abecd64ee..9e641b909c 100644 --- a/bench/nanobench.cpp +++ b/bench/nanobench.cpp @@ -1288,6 +1288,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 |