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

Side by Side Diff: bench/PictureRecordBench.cpp

Issue 23576015: Change old PRG to be SkLCGRandom; change new one to SkRandom (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Fix some spurious SkMWCRandoms Created 7 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « bench/PathUtilsBench.cpp ('k') | bench/RTreeBench.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 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 #include "SkBenchmark.h" 7 #include "SkBenchmark.h"
8 #include "SkCanvas.h" 8 #include "SkCanvas.h"
9 #include "SkColor.h" 9 #include "SkColor.h"
10 #include "SkPaint.h" 10 #include "SkPaint.h"
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 public: 136 public:
137 UniquePaintDictionaryRecordBench(void* param) 137 UniquePaintDictionaryRecordBench(void* param)
138 : INHERITED(param, "unique_paint_dictionary") { } 138 : INHERITED(param, "unique_paint_dictionary") { }
139 139
140 enum { 140 enum {
141 M = SkBENCHLOOP(15000), // number of unique paint objects 141 M = SkBENCHLOOP(15000), // number of unique paint objects
142 }; 142 };
143 protected: 143 protected:
144 virtual float innerLoopScale() const SK_OVERRIDE { return 0.1f; } 144 virtual float innerLoopScale() const SK_OVERRIDE { return 0.1f; }
145 virtual void recordCanvas(SkCanvas* canvas) { 145 virtual void recordCanvas(SkCanvas* canvas) {
146 SkMWCRandom rand; 146 SkRandom rand;
147 for (int i = 0; i < M; i++) { 147 for (int i = 0; i < M; i++) {
148 SkPaint paint; 148 SkPaint paint;
149 paint.setColor(rand.nextU()); 149 paint.setColor(rand.nextU());
150 canvas->drawPaint(paint); 150 canvas->drawPaint(paint);
151 } 151 }
152 } 152 }
153 153
154 private: 154 private:
155 typedef PictureRecordBench INHERITED; 155 typedef PictureRecordBench INHERITED;
156 }; 156 };
157 157
158 /* 158 /*
159 * Populates the SkPaint dictionary with a number of unique paint 159 * Populates the SkPaint dictionary with a number of unique paint
160 * objects that get reused repeatedly. 160 * objects that get reused repeatedly.
161 * 161 *
162 * Re-creating the paint objects in the inner loop slows the benchmark down 10% . 162 * Re-creating the paint objects in the inner loop slows the benchmark down 10% .
163 * Using setColor(i % objCount) instead of a random color creates a very high r ate 163 * Using setColor(i % objCount) instead of a random color creates a very high r ate
164 * of hash conflicts, slowing us down 12%. 164 * of hash conflicts, slowing us down 12%.
165 */ 165 */
166 class RecurringPaintDictionaryRecordBench : public PictureRecordBench { 166 class RecurringPaintDictionaryRecordBench : public PictureRecordBench {
167 public: 167 public:
168 RecurringPaintDictionaryRecordBench(void* param) 168 RecurringPaintDictionaryRecordBench(void* param)
169 : INHERITED(param, "recurring_paint_dictionary") { 169 : INHERITED(param, "recurring_paint_dictionary") {
170 SkMWCRandom rand; 170 SkRandom rand;
171 for (int i = 0; i < ObjCount; i++) { 171 for (int i = 0; i < ObjCount; i++) {
172 fPaint[i].setColor(rand.nextU()); 172 fPaint[i].setColor(rand.nextU());
173 } 173 }
174 } 174 }
175 175
176 enum { 176 enum {
177 ObjCount = 100, // number of unique paint objects 177 ObjCount = 100, // number of unique paint objects
178 M = SkBENCHLOOP(50000), // number of draw iterations 178 M = SkBENCHLOOP(50000), // number of draw iterations
179 }; 179 };
180 protected: 180 protected:
(...skipping 12 matching lines...) Expand all
193 193
194 /////////////////////////////////////////////////////////////////////////////// 194 ///////////////////////////////////////////////////////////////////////////////
195 195
196 static SkBenchmark* Fact0(void* p) { return new DictionaryRecordBench(p); } 196 static SkBenchmark* Fact0(void* p) { return new DictionaryRecordBench(p); }
197 static SkBenchmark* Fact1(void* p) { return new UniquePaintDictionaryRecordBench (p); } 197 static SkBenchmark* Fact1(void* p) { return new UniquePaintDictionaryRecordBench (p); }
198 static SkBenchmark* Fact2(void* p) { return new RecurringPaintDictionaryRecordBe nch(p); } 198 static SkBenchmark* Fact2(void* p) { return new RecurringPaintDictionaryRecordBe nch(p); }
199 199
200 static BenchRegistry gReg0(Fact0); 200 static BenchRegistry gReg0(Fact0);
201 static BenchRegistry gReg1(Fact1); 201 static BenchRegistry gReg1(Fact1);
202 static BenchRegistry gReg2(Fact2); 202 static BenchRegistry gReg2(Fact2);
OLDNEW
« no previous file with comments | « bench/PathUtilsBench.cpp ('k') | bench/RTreeBench.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698