| /* | 
 |  * Copyright 2016 Google Inc. | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 |  | 
 | #include "Benchmark.h" | 
 | #include "SkStream.h" | 
 |  | 
 | class StreamBench : public Benchmark { | 
 |     SkString    fName; | 
 |     const bool  fTestWrite4; | 
 | public: | 
 |     StreamBench(bool testWrite4) : fTestWrite4(testWrite4) { | 
 |         fName.printf("wstream_%d", testWrite4); | 
 |     } | 
 |  | 
 |     bool isSuitableFor(Backend backend) override { | 
 |         return backend == kNonRendering_Backend; | 
 |     } | 
 |  | 
 | protected: | 
 |     const char* onGetName() override { return fName.c_str(); } | 
 |  | 
 |     void onDraw(int loops, SkCanvas* canvas) override { | 
 |         const char t3[] = { 1, 2, 3 }; | 
 |         const char t5[] = { 1, 2, 3, 4, 5 }; | 
 |         for (int i = 0; i < loops*100; ++i) { | 
 |             SkDynamicMemoryWStream stream; | 
 |             for (int j = 0; j < 10000; ++j) { | 
 |                 if (fTestWrite4) { | 
 |                     stream.write32(j); | 
 |                     stream.write32(j+j); | 
 |                 } else { | 
 |                     stream.write(t3, 3); | 
 |                     stream.write(t5, 5); | 
 |                 } | 
 |             } | 
 |         } | 
 |     } | 
 |  | 
 | private: | 
 |     typedef Benchmark INHERITED; | 
 | }; | 
 |  | 
 | /////////////////////////////////////////////////////////////////////////////// | 
 |  | 
 | DEF_BENCH(return new StreamBench(false);) | 
 | DEF_BENCH(return new StreamBench(true);) |