Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(519)

Side by Side Diff: bench/PathBench.cpp

Issue 347823004: Remove Sk prefix from some bench classes. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: SkGMBench -> GMBench Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « bench/MutexBench.cpp ('k') | bench/PathIterBench.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #include "SkBenchmark.h" 8 #include "Benchmark.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
11 #include "SkColorPriv.h" 11 #include "SkColorPriv.h"
12 #include "SkPaint.h" 12 #include "SkPaint.h"
13 #include "SkRandom.h" 13 #include "SkRandom.h"
14 #include "SkShader.h" 14 #include "SkShader.h"
15 #include "SkString.h" 15 #include "SkString.h"
16 #include "SkTArray.h" 16 #include "SkTArray.h"
17 17
18 enum Flags { 18 enum Flags {
19 kStroke_Flag = 1 << 0, 19 kStroke_Flag = 1 << 0,
20 kBig_Flag = 1 << 1 20 kBig_Flag = 1 << 1
21 }; 21 };
22 22
23 #define FLAGS00 Flags(0) 23 #define FLAGS00 Flags(0)
24 #define FLAGS01 Flags(kStroke_Flag) 24 #define FLAGS01 Flags(kStroke_Flag)
25 #define FLAGS10 Flags(kBig_Flag) 25 #define FLAGS10 Flags(kBig_Flag)
26 #define FLAGS11 Flags(kStroke_Flag | kBig_Flag) 26 #define FLAGS11 Flags(kStroke_Flag | kBig_Flag)
27 27
28 class PathBench : public SkBenchmark { 28 class PathBench : public Benchmark {
29 SkPaint fPaint; 29 SkPaint fPaint;
30 SkString fName; 30 SkString fName;
31 Flags fFlags; 31 Flags fFlags;
32 public: 32 public:
33 PathBench(Flags flags) : fFlags(flags) { 33 PathBench(Flags flags) : fFlags(flags) {
34 fPaint.setStyle(flags & kStroke_Flag ? SkPaint::kStroke_Style : 34 fPaint.setStyle(flags & kStroke_Flag ? SkPaint::kStroke_Style :
35 SkPaint::kFill_Style); 35 SkPaint::kFill_Style);
36 fPaint.setStrokeWidth(SkIntToScalar(5)); 36 fPaint.setStrokeWidth(SkIntToScalar(5));
37 fPaint.setStrokeJoin(SkPaint::kBevel_Join); 37 fPaint.setStrokeJoin(SkPaint::kBevel_Join);
38 } 38 }
(...skipping 28 matching lines...) Expand all
67 count >>= 2; 67 count >>= 2;
68 } 68 }
69 count >>= (3 * complexity()); 69 count >>= (3 * complexity());
70 70
71 for (int i = 0; i < count; i++) { 71 for (int i = 0; i < count; i++) {
72 canvas->drawPath(path, paint); 72 canvas->drawPath(path, paint);
73 } 73 }
74 } 74 }
75 75
76 private: 76 private:
77 typedef SkBenchmark INHERITED; 77 typedef Benchmark INHERITED;
78 }; 78 };
79 79
80 class TrianglePathBench : public PathBench { 80 class TrianglePathBench : public PathBench {
81 public: 81 public:
82 TrianglePathBench(Flags flags) : INHERITED(flags) {} 82 TrianglePathBench(Flags flags) : INHERITED(flags) {}
83 83
84 virtual void appendName(SkString* name) SK_OVERRIDE { 84 virtual void appendName(SkString* name) SK_OVERRIDE {
85 name->append("triangle"); 85 name->append("triangle");
86 } 86 }
87 virtual void makePath(SkPath* path) SK_OVERRIDE { 87 virtual void makePath(SkPath* path) SK_OVERRIDE {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 path->moveTo(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480); 207 path->moveTo(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480);
208 for (size_t i = 1; i < 100; i++) { 208 for (size_t i = 1; i < 100; i++) {
209 path->lineTo(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480); 209 path->lineTo(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480);
210 } 210 }
211 } 211 }
212 virtual int complexity() SK_OVERRIDE { return 2; } 212 virtual int complexity() SK_OVERRIDE { return 2; }
213 private: 213 private:
214 typedef PathBench INHERITED; 214 typedef PathBench INHERITED;
215 }; 215 };
216 216
217 class RandomPathBench : public SkBenchmark { 217 class RandomPathBench : public Benchmark {
218 public: 218 public:
219 virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { 219 virtual bool isSuitableFor(Backend backend) SK_OVERRIDE {
220 return backend == kNonRendering_Backend; 220 return backend == kNonRendering_Backend;
221 } 221 }
222 222
223 protected: 223 protected:
224 void createData(int minVerbs, 224 void createData(int minVerbs,
225 int maxVerbs, 225 int maxVerbs,
226 bool allowMoves = true, 226 bool allowMoves = true,
227 SkRect* bounds = NULL) { 227 SkRect* bounds = NULL) {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 kNumVerbs = 1 << 5, 305 kNumVerbs = 1 << 5,
306 kNumPoints = 1 << 5, 306 kNumPoints = 1 << 5,
307 }; 307 };
308 SkAutoTArray<int> fVerbCnts; 308 SkAutoTArray<int> fVerbCnts;
309 SkAutoTArray<SkPath::Verb> fVerbs; 309 SkAutoTArray<SkPath::Verb> fVerbs;
310 SkAutoTArray<SkPoint> fPoints; 310 SkAutoTArray<SkPoint> fPoints;
311 int fCurrPath; 311 int fCurrPath;
312 int fCurrVerb; 312 int fCurrVerb;
313 int fCurrPoint; 313 int fCurrPoint;
314 SkRandom fRandom; 314 SkRandom fRandom;
315 typedef SkBenchmark INHERITED; 315 typedef Benchmark INHERITED;
316 }; 316 };
317 317
318 class PathCreateBench : public RandomPathBench { 318 class PathCreateBench : public RandomPathBench {
319 public: 319 public:
320 PathCreateBench() { 320 PathCreateBench() {
321 } 321 }
322 322
323 protected: 323 protected:
324 virtual const char* onGetName() SK_OVERRIDE { 324 virtual const char* onGetName() SK_OVERRIDE {
325 return "path_create"; 325 return "path_create";
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 // must be a pow 2 560 // must be a pow 2
561 kPathCnt = 1 << 5, 561 kPathCnt = 1 << 5,
562 }; 562 };
563 SkAutoTArray<SkPath> fPaths0; 563 SkAutoTArray<SkPath> fPaths0;
564 SkAutoTArray<SkPath> fPaths1; 564 SkAutoTArray<SkPath> fPaths1;
565 SkMatrix fMatrix; 565 SkMatrix fMatrix;
566 typedef RandomPathBench INHERITED; 566 typedef RandomPathBench INHERITED;
567 }; 567 };
568 568
569 569
570 class CirclesBench : public SkBenchmark { 570 class CirclesBench : public Benchmark {
571 protected: 571 protected:
572 SkString fName; 572 SkString fName;
573 Flags fFlags; 573 Flags fFlags;
574 574
575 public: 575 public:
576 CirclesBench(Flags flags) : fFlags(flags) { 576 CirclesBench(Flags flags) : fFlags(flags) {
577 fName.printf("circles_%s", fFlags & kStroke_Flag ? "stroke" : "fill"); 577 fName.printf("circles_%s", fFlags & kStroke_Flag ? "stroke" : "fill");
578 } 578 }
579 579
580 protected: 580 protected:
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 temp.arcTo(r, 0, 0, false); 612 temp.arcTo(r, 0, 0, false);
613 temp.addOval(r, SkPath::kCCW_Direction); 613 temp.addOval(r, SkPath::kCCW_Direction);
614 temp.arcTo(r, 360, 0, true); 614 temp.arcTo(r, 360, 0, true);
615 temp.close(); 615 temp.close();
616 616
617 canvas->drawPath(temp, paint); 617 canvas->drawPath(temp, paint);
618 } 618 }
619 } 619 }
620 620
621 private: 621 private:
622 typedef SkBenchmark INHERITED; 622 typedef Benchmark INHERITED;
623 }; 623 };
624 624
625 625
626 // Chrome creates its own round rects with each corner possibly being different. 626 // Chrome creates its own round rects with each corner possibly being different.
627 // In its "zero radius" incarnation it creates degenerate round rects. 627 // In its "zero radius" incarnation it creates degenerate round rects.
628 // Note: PathTest::test_arb_round_rect_is_convex and 628 // Note: PathTest::test_arb_round_rect_is_convex and
629 // test_arb_zero_rad_round_rect_is_rect perform almost exactly 629 // test_arb_zero_rad_round_rect_is_rect perform almost exactly
630 // the same test (but with no drawing) 630 // the same test (but with no drawing)
631 class ArbRoundRectBench : public SkBenchmark { 631 class ArbRoundRectBench : public Benchmark {
632 protected: 632 protected:
633 SkString fName; 633 SkString fName;
634 634
635 public: 635 public:
636 ArbRoundRectBench(bool zeroRad) : fZeroRad(zeroRad) { 636 ArbRoundRectBench(bool zeroRad) : fZeroRad(zeroRad) {
637 if (zeroRad) { 637 if (zeroRad) {
638 fName.printf("zeroradroundrect"); 638 fName.printf("zeroradroundrect");
639 } else { 639 } else {
640 fName.printf("arbroundrect"); 640 fName.printf("arbroundrect");
641 } 641 }
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 make_arb_round_rect(&temp, r, r.width() / 10, r.height() / 15); 716 make_arb_round_rect(&temp, r, r.width() / 10, r.height() / 15);
717 } 717 }
718 718
719 canvas->drawPath(temp, paint); 719 canvas->drawPath(temp, paint);
720 } 720 }
721 } 721 }
722 722
723 private: 723 private:
724 bool fZeroRad; // should 0 radius rounds rects be tested? 724 bool fZeroRad; // should 0 radius rounds rects be tested?
725 725
726 typedef SkBenchmark INHERITED; 726 typedef Benchmark INHERITED;
727 }; 727 };
728 728
729 class ConservativelyContainsBench : public SkBenchmark { 729 class ConservativelyContainsBench : public Benchmark {
730 public: 730 public:
731 enum Type { 731 enum Type {
732 kRect_Type, 732 kRect_Type,
733 kRoundRect_Type, 733 kRoundRect_Type,
734 kOval_Type, 734 kOval_Type,
735 }; 735 };
736 736
737 ConservativelyContainsBench(Type type) { 737 ConservativelyContainsBench(Type type) {
738 fParity = false; 738 fParity = false;
739 fName = "conservatively_contains_"; 739 fName = "conservatively_contains_";
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 static const SkSize kQueryMin; // minimum query rect size, should be <= kQue ryMax 792 static const SkSize kQueryMin; // minimum query rect size, should be <= kQue ryMax
793 static const SkSize kQueryMax; // max query rect size, should < kBounds 793 static const SkSize kQueryMax; // max query rect size, should < kBounds
794 static const SkRect kBaseRect; // rect that is used to construct the path 794 static const SkRect kBaseRect; // rect that is used to construct the path
795 static const SkScalar kRRRadii[2]; // x and y radii for round rect 795 static const SkScalar kRRRadii[2]; // x and y radii for round rect
796 796
797 SkString fName; 797 SkString fName;
798 SkPath fPath; 798 SkPath fPath;
799 bool fParity; 799 bool fParity;
800 SkTDArray<SkRect> fQueryRects; 800 SkTDArray<SkRect> fQueryRects;
801 801
802 typedef SkBenchmark INHERITED; 802 typedef Benchmark INHERITED;
803 }; 803 };
804 804
805 /////////////////////////////////////////////////////////////////////////////// 805 ///////////////////////////////////////////////////////////////////////////////
806 806
807 #include "SkGeometry.h" 807 #include "SkGeometry.h"
808 808
809 class ConicBench_Chop5 : public SkBenchmark { 809 class ConicBench_Chop5 : public Benchmark {
810 SkConic fRQ; 810 SkConic fRQ;
811 public: 811 public:
812 ConicBench_Chop5() { 812 ConicBench_Chop5() {
813 fRQ.fPts[0].set(0, 0); 813 fRQ.fPts[0].set(0, 0);
814 fRQ.fPts[1].set(100, 0); 814 fRQ.fPts[1].set(100, 0);
815 fRQ.fPts[2].set(100, 100); 815 fRQ.fPts[2].set(100, 100);
816 fRQ.fW = SkScalarCos(SK_ScalarPI/4); 816 fRQ.fW = SkScalarCos(SK_ScalarPI/4);
817 } 817 }
818 818
819 private: 819 private:
820 virtual const char* onGetName() SK_OVERRIDE { 820 virtual const char* onGetName() SK_OVERRIDE {
821 return "ratquad-chop-0.5"; 821 return "ratquad-chop-0.5";
822 } 822 }
823 823
824 virtual void onDraw(const int loops, SkCanvas*) SK_OVERRIDE { 824 virtual void onDraw(const int loops, SkCanvas*) SK_OVERRIDE {
825 SkConic dst[2]; 825 SkConic dst[2];
826 for (int i = 0; i < loops; ++i) { 826 for (int i = 0; i < loops; ++i) {
827 fRQ.chopAt(0.5f, dst); 827 fRQ.chopAt(0.5f, dst);
828 } 828 }
829 } 829 }
830 830
831 typedef SkBenchmark INHERITED; 831 typedef Benchmark INHERITED;
832 }; 832 };
833 833
834 class ConicBench_ChopHalf : public SkBenchmark { 834 class ConicBench_ChopHalf : public Benchmark {
835 SkConic fRQ; 835 SkConic fRQ;
836 public: 836 public:
837 ConicBench_ChopHalf() { 837 ConicBench_ChopHalf() {
838 fRQ.fPts[0].set(0, 0); 838 fRQ.fPts[0].set(0, 0);
839 fRQ.fPts[1].set(100, 0); 839 fRQ.fPts[1].set(100, 0);
840 fRQ.fPts[2].set(100, 100); 840 fRQ.fPts[2].set(100, 100);
841 fRQ.fW = SkScalarCos(SK_ScalarPI/4); 841 fRQ.fW = SkScalarCos(SK_ScalarPI/4);
842 } 842 }
843 843
844 private: 844 private:
845 virtual const char* onGetName() SK_OVERRIDE { 845 virtual const char* onGetName() SK_OVERRIDE {
846 return "ratquad-chop-half"; 846 return "ratquad-chop-half";
847 } 847 }
848 848
849 virtual void onDraw(const int loops, SkCanvas*) SK_OVERRIDE { 849 virtual void onDraw(const int loops, SkCanvas*) SK_OVERRIDE {
850 SkConic dst[2]; 850 SkConic dst[2];
851 for (int i = 0; i < loops; ++i) { 851 for (int i = 0; i < loops; ++i) {
852 fRQ.chop(dst); 852 fRQ.chop(dst);
853 } 853 }
854 } 854 }
855 855
856 typedef SkBenchmark INHERITED; 856 typedef Benchmark INHERITED;
857 }; 857 };
858 858
859 /////////////////////////////////////////////////////////////////////////////// 859 ///////////////////////////////////////////////////////////////////////////////
860 860
861 static void rand_conic(SkConic* conic, SkRandom& rand) { 861 static void rand_conic(SkConic* conic, SkRandom& rand) {
862 for (int i = 0; i < 3; ++i) { 862 for (int i = 0; i < 3; ++i) {
863 conic->fPts[i].set(rand.nextUScalar1() * 100, rand.nextUScalar1() * 100) ; 863 conic->fPts[i].set(rand.nextUScalar1() * 100, rand.nextUScalar1() * 100) ;
864 } 864 }
865 if (rand.nextUScalar1() > 0.5f) { 865 if (rand.nextUScalar1() > 0.5f) {
866 conic->fW = rand.nextUScalar1(); 866 conic->fW = rand.nextUScalar1();
867 } else { 867 } else {
868 conic->fW = 1 + rand.nextUScalar1() * 4; 868 conic->fW = 1 + rand.nextUScalar1() * 4;
869 } 869 }
870 } 870 }
871 871
872 class ConicBench : public SkBenchmark { 872 class ConicBench : public Benchmark {
873 public: 873 public:
874 ConicBench() { 874 ConicBench() {
875 SkRandom rand; 875 SkRandom rand;
876 for (int i = 0; i < CONICS; ++i) { 876 for (int i = 0; i < CONICS; ++i) {
877 rand_conic(&fConics[i], rand); 877 rand_conic(&fConics[i], rand);
878 } 878 }
879 } 879 }
880 880
881 virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { 881 virtual bool isSuitableFor(Backend backend) SK_OVERRIDE {
882 return backend == kNonRendering_Backend; 882 return backend == kNonRendering_Backend;
883 } 883 }
884 884
885 protected: 885 protected:
886 enum { 886 enum {
887 CONICS = 100 887 CONICS = 100
888 }; 888 };
889 SkConic fConics[CONICS]; 889 SkConic fConics[CONICS];
890 890
891 private: 891 private:
892 typedef SkBenchmark INHERITED; 892 typedef Benchmark INHERITED;
893 }; 893 };
894 894
895 class ConicBench_ComputeError : public ConicBench { 895 class ConicBench_ComputeError : public ConicBench {
896 public: 896 public:
897 ConicBench_ComputeError() {} 897 ConicBench_ComputeError() {}
898 898
899 protected: 899 protected:
900 virtual const char* onGetName() SK_OVERRIDE { 900 virtual const char* onGetName() SK_OVERRIDE {
901 return "conic-compute-error"; 901 return "conic-compute-error";
902 } 902 }
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 DEF_BENCH( return new ArbRoundRectBench(true); ) 1010 DEF_BENCH( return new ArbRoundRectBench(true); )
1011 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k Rect_Type); ) 1011 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k Rect_Type); )
1012 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k RoundRect_Type); ) 1012 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k RoundRect_Type); )
1013 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k Oval_Type); ) 1013 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k Oval_Type); )
1014 1014
1015 DEF_BENCH( return new ConicBench_Chop5() ) 1015 DEF_BENCH( return new ConicBench_Chop5() )
1016 DEF_BENCH( return new ConicBench_ChopHalf() ) 1016 DEF_BENCH( return new ConicBench_ChopHalf() )
1017 DEF_BENCH( return new ConicBench_ComputeError() ) 1017 DEF_BENCH( return new ConicBench_ComputeError() )
1018 DEF_BENCH( return new ConicBench_asQuadTol() ) 1018 DEF_BENCH( return new ConicBench_asQuadTol() )
1019 DEF_BENCH( return new ConicBench_quadPow2() ) 1019 DEF_BENCH( return new ConicBench_quadPow2() )
OLDNEW
« no previous file with comments | « bench/MutexBench.cpp ('k') | bench/PathIterBench.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698