1 /*
2  * Copyright 2015 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 
8 #ifndef VisualLightweightBenchModule_DEFINED
9 #define VisualLightweightBenchModule_DEFINED
10 
11 #include "VisualStreamTimingModule.h"
12 
13 #include "ResultsWriter.h"
14 #include "SkPicture.h"
15 #include "VisualBench.h"
16 
17 class SkCanvas;
18 
19 /*
20  * This module is designed to be a minimal overhead timing module for VisualBench
21  */
22 class VisualLightweightBenchModule : public VisualStreamTimingModule {
23 public:
24     // TODO get rid of backpointer
25     VisualLightweightBenchModule(VisualBench* owner);
26 
27     bool onHandleChar(SkUnichar c) override;
28 
29 private:
30     void renderFrame(SkCanvas*, Benchmark*, int loops) override;
31     bool timingFinished(Benchmark*, int loops, double measurement) override;
32     void printStats(Benchmark*, int loops);
33 
34     struct Record {
35         SkTArray<double> fMeasurements;
36     };
37     int fCurrentSample;
38     SkTArray<Record> fRecords;
39 
40     // support framework
41     SkAutoTDelete<ResultsWriter> fResults;
42 
43     typedef VisualStreamTimingModule INHERITED;
44 };
45 
46 #endif
47