1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2016 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "bench/Benchmark.h" 9cb93a386Sopenharmony_ci#include "include/core/SkStream.h" 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ciclass StreamBench : public Benchmark { 12cb93a386Sopenharmony_ci SkString fName; 13cb93a386Sopenharmony_ci const bool fTestWrite4; 14cb93a386Sopenharmony_cipublic: 15cb93a386Sopenharmony_ci StreamBench(bool testWrite4) : fTestWrite4(testWrite4) { 16cb93a386Sopenharmony_ci fName.printf("wstream_%d", testWrite4); 17cb93a386Sopenharmony_ci } 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ci bool isSuitableFor(Backend backend) override { 20cb93a386Sopenharmony_ci return backend == kNonRendering_Backend; 21cb93a386Sopenharmony_ci } 22cb93a386Sopenharmony_ci 23cb93a386Sopenharmony_ciprotected: 24cb93a386Sopenharmony_ci const char* onGetName() override { return fName.c_str(); } 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_ci void onDraw(int loops, SkCanvas* canvas) override { 27cb93a386Sopenharmony_ci const char t3[] = { 1, 2, 3 }; 28cb93a386Sopenharmony_ci const char t5[] = { 1, 2, 3, 4, 5 }; 29cb93a386Sopenharmony_ci for (int i = 0; i < loops*100; ++i) { 30cb93a386Sopenharmony_ci SkDynamicMemoryWStream stream; 31cb93a386Sopenharmony_ci for (int j = 0; j < 10000; ++j) { 32cb93a386Sopenharmony_ci if (fTestWrite4) { 33cb93a386Sopenharmony_ci stream.write32(j); 34cb93a386Sopenharmony_ci stream.write32(j+j); 35cb93a386Sopenharmony_ci } else { 36cb93a386Sopenharmony_ci stream.write(t3, 3); 37cb93a386Sopenharmony_ci stream.write(t5, 5); 38cb93a386Sopenharmony_ci } 39cb93a386Sopenharmony_ci } 40cb93a386Sopenharmony_ci } 41cb93a386Sopenharmony_ci } 42cb93a386Sopenharmony_ci 43cb93a386Sopenharmony_ciprivate: 44cb93a386Sopenharmony_ci using INHERITED = Benchmark; 45cb93a386Sopenharmony_ci}; 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_ci/////////////////////////////////////////////////////////////////////////////// 48cb93a386Sopenharmony_ci 49cb93a386Sopenharmony_ciDEF_BENCH(return new StreamBench(false);) 50cb93a386Sopenharmony_ciDEF_BENCH(return new StreamBench(true);) 51