Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1613)

Unified Diff: tools/VisualBench/VisualBench.cpp

Issue 1298213002: Add skeleton json support to visualbench (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: feedback inc Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/VisualBench/VisualBench.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/VisualBench/VisualBench.cpp
diff --git a/tools/VisualBench/VisualBench.cpp b/tools/VisualBench/VisualBench.cpp
index 3a6cb5012f67b3d8c211ce45e6aacb078720d89d..43dc56d980966bcc4bc23477b6a759282892adc0 100644
--- a/tools/VisualBench/VisualBench.cpp
+++ b/tools/VisualBench/VisualBench.cpp
@@ -36,6 +36,9 @@ DEFINE_int32(msaa, 0, "Number of msaa samples.");
DEFINE_bool2(fullscreen, f, true, "Run fullscreen.");
DEFINE_bool2(verbose, v, false, "enable verbose output from the test driver.");
DEFINE_string(key, "", ""); // dummy to enable gm tests that have platform-specific names
+DEFINE_string(outResultsFile, "", "If given, write results here as JSON.");
+DEFINE_string(properties, "",
+ "Space-separated key/value pairs to add to JSON identifying this run.");
static SkString humanize(double ms) {
if (FLAGS_verbose) {
@@ -53,7 +56,8 @@ VisualBench::VisualBench(void* hwnd, int argc, char** argv)
, fFlushes(1)
, fLoops(1)
, fState(kPreWarmLoops_State)
- , fBenchmark(NULL) {
+ , fBenchmark(NULL)
+ , fResults(SkNEW(ResultsWriter)) {
SkCommandLineFlags::Parse(argc, argv);
this->setTitle();
@@ -63,6 +67,19 @@ VisualBench::VisualBench(void* hwnd, int argc, char** argv)
// Print header
SkDebugf("curr/maxrss\tloops\tflushes\tmin\tmedian\tmean\tmax\tstddev\tbench\n");
+
+ // setup json logging if required
+ if (!FLAGS_outResultsFile.isEmpty()) {
+ fResults.reset(SkNEW(NanoJSONResultsWriter(FLAGS_outResultsFile[0])));
+ }
+
+ if (1 == FLAGS_properties.count() % 2) {
+ SkDebugf("ERROR: --properties must be passed with an even number of arguments.\n");
+ } else {
+ for (int i = 1; i < FLAGS_properties.count(); i += 2) {
+ fResults->property(FLAGS_properties[i - 1], FLAGS_properties[i]);
+ }
+ }
}
VisualBench::~VisualBench() {
@@ -136,14 +153,28 @@ inline void VisualBench::renderFrame(SkCanvas* canvas) {
void VisualBench::printStats() {
const SkTArray<double>& measurements = fRecords.back().fMeasurements;
const char* shortName = fBenchmark->getUniqueName();
+
+ // update log
+ // Note: We currently log only the minimum. It would be interesting to log more information
+ SkString configName;
+ if (FLAGS_msaa > 0) {
+ configName.appendf("msaa_%d", FLAGS_msaa);
+ } else {
+ configName.appendf("gpu");
+ }
+ fResults->config(configName.c_str());
+ fResults->configOption("name", fBenchmark->getUniqueName());
+ SkASSERT(measurements.count());
+ Stats stats(measurements);
+ fResults->metric("min_ms", stats.min);
+
+ // Print output
if (FLAGS_verbose) {
for (int i = 0; i < measurements.count(); i++) {
SkDebugf("%s ", HUMANIZE(measurements[i]));
}
SkDebugf("%s\n", shortName);
} else {
- SkASSERT(measurements.count());
- Stats stats(measurements);
const double stdDevPercent = 100 * sqrt(stats.var) / stats.mean;
SkDebugf("%4d/%-4dMB\t%d\t%d\t%s\t%s\t%s\t%s\t%.0f%%\t%s\n",
sk_tools::getCurrResidentSetSizeMB(),
@@ -172,6 +203,10 @@ bool VisualBench::advanceRecordIfNecessary(SkCanvas* canvas) {
canvas->clear(0xffffffff);
fBenchmark->preDraw();
fRecords.push_back();
+
+ // Log bench name
+ fResults->bench(fBenchmark->getUniqueName(), fBenchmark->getSize().fX,
+ fBenchmark->getSize().fY);
return true;
}
« no previous file with comments | « tools/VisualBench/VisualBench.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698