FontScalerBench.cpp revision f7834221ac5342a3446b9b299398ea3ff7976946
1/* 2 * Copyright 2011 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 8#include "Benchmark.h" 9#include "SkCanvas.h" 10#include "SkGraphics.h" 11#include "SkPaint.h" 12#include "SkRandom.h" 13#include "SkString.h" 14 15class FontScalerBench : public Benchmark { 16 SkString fName; 17 SkString fText; 18 bool fDoLCD; 19public: 20 FontScalerBench(bool doLCD) { 21 fName.printf("fontscaler_%s", doLCD ? "lcd" : "aa"); 22 fText.set("abcdefghijklmnopqrstuvwxyz01234567890"); 23 fDoLCD = doLCD; 24 } 25 26protected: 27 virtual const char* onGetName() { return fName.c_str(); } 28 virtual void onDraw(const int loops, SkCanvas* canvas) { 29 SkPaint paint; 30 this->setupPaint(&paint); 31 paint.setLCDRenderText(fDoLCD); 32 33 for (int i = 0; i < loops; i++) { 34 // this is critical - we want to time the creation process, so we 35 // explicitly flush our cache before each run 36 SkGraphics::PurgeFontCache(); 37 38 for (int ps = 9; ps <= 24; ps += 2) { 39 paint.setTextSize(SkIntToScalar(ps)); 40 canvas->drawText(fText.c_str(), fText.size(), 41 0, SkIntToScalar(20), paint); 42 } 43 } 44 } 45private: 46 typedef Benchmark INHERITED; 47}; 48 49/////////////////////////////////////////////////////////////////////////////// 50 51DEF_BENCH( return SkNEW_ARGS(FontScalerBench, (false)); ) 52DEF_BENCH( return SkNEW_ARGS(FontScalerBench, (true)); ) 53