Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / skia / bench / ResultsWriter.h
1 /*
2  * Copyright 2013 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  *
7  * Classes for writing out bench results in various formats.
8  */
9
10 #ifndef SkResultsWriter_DEFINED
11 #define SkResultsWriter_DEFINED
12
13 #include "include/core/SkString.h"
14 #include "include/core/SkTypes.h"
15 #include "src/utils/SkJSONWriter.h"
16 #include <cmath>
17
18 /**
19  NanoJSONResultsWriter helps nanobench writes the test results out in the following format:
20
21  {
22     "key": {
23       "arch": "Arm7",
24       "gpu": "SGX540",
25       "os": "Android",
26       "model": "GalaxyNexus",
27     }
28     "gitHash": "d1830323662ae8ae06908b97f15180fd25808894",
29     "build_number": "1234",
30     "results" : {
31         "Xfermode_Luminosity_640_480" : {
32            "8888" : {
33                  "median_ms" : 143.188128906250,
34                  "min_ms" : 143.835957031250,
35                  ...
36               },
37           ...
38 */
39 class NanoJSONResultsWriter : public SkJSONWriter {
40 public:
41     NanoJSONResultsWriter(SkWStream* stream, Mode mode) : SkJSONWriter(stream, mode) {}
42
43     void beginBench(const char* name, int32_t x, int32_t y) {
44         SkString id = SkStringPrintf("%s_%d_%d", name, x, y);
45         this->beginObject(id.c_str());
46     }
47
48     void endBench() { this->endObject(); }
49
50     void appendMetric(const char* name, double value) {
51         // Don't record if NaN or Inf.
52         if (std::isfinite(value)) {
53             this->appendDoubleDigits(name, value, 16);
54         }
55     }
56 };
57
58 #endif