Index: bench/ResultsWriter.h |
diff --git a/bench/ResultsWriter.h b/bench/ResultsWriter.h |
index b04c8ff53cff64079fed0890ada634053e285675..a9eef802bda103f2ec0341782c3fc0f68bbe6954 100644 |
--- a/bench/ResultsWriter.h |
+++ b/bench/ResultsWriter.h |
@@ -81,7 +81,7 @@ private: |
/** |
* This ResultsWriter handles writing out the results in JSON. |
* |
- * The output looks like: |
+ * The output looks like (except compressed to a single line): |
* |
* { |
* "options" : { |
@@ -90,9 +90,12 @@ private: |
* ... |
* "system" : "UNIX" |
* }, |
- * "results" : { |
- * "Xfermode_Luminosity_640_480" : { |
- * "565" : { |
+ * "results" : [ |
+ * { |
+ * "name" : "Xfermode_Luminosity_640_480", |
+ * "results" : [ |
+ * { |
+ * "name": "565", |
* "cmsecs" : 143.188128906250, |
* "msecs" : 143.835957031250 |
* }, |
@@ -113,7 +116,9 @@ private: |
if(search_results != NULL) { |
return search_results; |
} else { |
- return &(root->append(Json::Value())); |
+ Json::Value* new_val = &(root->append(Json::Value())); |
+ (*new_val)["name"] = name; |
+ return new_val; |
} |
} |
public: |
@@ -128,15 +133,17 @@ public: |
fRoot["options"][name] = value; |
} |
virtual void bench(const char name[], int32_t x, int32_t y) { |
- const char* full_name = SkStringPrintf( "%s_%d_%d", name, x, y).c_str(); |
- Json::Value* bench_node = find_named_node(&fResults, full_name); |
- (*bench_node)["name"] = full_name; |
+ SkString sk_name(name); |
+ sk_name.append("_"); |
+ sk_name.appendS32(x); |
+ sk_name.append("_"); |
+ sk_name.appendS32(y); |
+ Json::Value* bench_node = find_named_node(&fResults, sk_name.c_str()); |
fBench = &(*bench_node)["results"]; |
} |
virtual void config(const char name[]) { |
SkASSERT(NULL != fBench); |
fConfig = find_named_node(fBench, name); |
- (*fConfig)["name"] = name; |
} |
virtual void timer(const char name[], double ms) { |
SkASSERT(NULL != fConfig); |
@@ -144,10 +151,11 @@ public: |
} |
virtual void end() { |
SkFILEWStream stream(fFilename.c_str()); |
- stream.writeText(fRoot.toStyledString().c_str()); |
+ stream.writeText(Json::FastWriter().write(fRoot).c_str()); |
stream.flush(); |
} |
private: |
+ |
SkString fFilename; |
Json::Value fRoot; |
Json::Value& fResults; |