StreamBench.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. * Copyright 2016 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. #include "bench/Benchmark.h"
  8. #include "include/core/SkStream.h"
  9. class StreamBench : public Benchmark {
  10. SkString fName;
  11. const bool fTestWrite4;
  12. public:
  13. StreamBench(bool testWrite4) : fTestWrite4(testWrite4) {
  14. fName.printf("wstream_%d", testWrite4);
  15. }
  16. bool isSuitableFor(Backend backend) override {
  17. return backend == kNonRendering_Backend;
  18. }
  19. protected:
  20. const char* onGetName() override { return fName.c_str(); }
  21. void onDraw(int loops, SkCanvas* canvas) override {
  22. const char t3[] = { 1, 2, 3 };
  23. const char t5[] = { 1, 2, 3, 4, 5 };
  24. for (int i = 0; i < loops*100; ++i) {
  25. SkDynamicMemoryWStream stream;
  26. for (int j = 0; j < 10000; ++j) {
  27. if (fTestWrite4) {
  28. stream.write32(j);
  29. stream.write32(j+j);
  30. } else {
  31. stream.write(t3, 3);
  32. stream.write(t5, 5);
  33. }
  34. }
  35. }
  36. }
  37. private:
  38. typedef Benchmark INHERITED;
  39. };
  40. ///////////////////////////////////////////////////////////////////////////////
  41. DEF_BENCH(return new StreamBench(false);)
  42. DEF_BENCH(return new StreamBench(true);)