QuickRejectBench.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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/SkCanvas.h"
  9. #include "include/utils/SkRandom.h"
  10. class QuickRejectBench : public Benchmark {
  11. enum { N = 1000000 };
  12. float fFloats[N];
  13. int fInts [N];
  14. const char* onGetName() override { return "quick_reject"; }
  15. bool isSuitableFor(Backend backend) override { return backend != kNonRendering_Backend; }
  16. void onDelayedSetup() override {
  17. SkRandom rand;
  18. for (int i = 0; i < N; ++i) {
  19. fFloats[i] = 300.0f * (rand.nextSScalar1() + 0.5f);
  20. }
  21. }
  22. void onDraw(int loops, SkCanvas* canvas) override {
  23. while (loops --> 0) {
  24. for (int i = 0; i < N - 4; i++) {
  25. if (canvas->quickReject(*(SkRect*)(fFloats+i))) {
  26. fInts[i] = 11;
  27. } else {
  28. fInts[i] = 24;
  29. }
  30. }
  31. }
  32. }
  33. };
  34. DEF_BENCH( return new QuickRejectBench; )
  35. class ConcatBench : public Benchmark {
  36. SkMatrix fMatrix;
  37. const char* onGetName() override { return "concat"; }
  38. bool isSuitableFor(Backend backend) override { return backend != kNonRendering_Backend; }
  39. void onDelayedSetup() override {
  40. SkRandom r;
  41. fMatrix.setScale(5.0f, 5.0f);
  42. fMatrix.setTranslateX(10.0f);
  43. fMatrix.setTranslateY(10.0f);
  44. }
  45. void onDraw(int loops, SkCanvas* canvas) override {
  46. while (loops --> 0) {
  47. canvas->setMatrix(SkMatrix::MakeScale(3.0f));
  48. canvas->concat(fMatrix);
  49. }
  50. }
  51. };
  52. DEF_BENCH( return new ConcatBench; )